js对数组进行分组且赋值给某对象的属性

在项目中遇到匹配规则给某对象,但多选时,得到的数据将会组成为一个数组,则需要给该数组进行分组。

使用接口,得到合集的数组。

复制代码
this.dataArray = [
  {id:"1", codeid:"123", name:"名字1"},
  {id:"2", codeid:"123", name:"名字2"},
  {id:"3", codeid:"321", name:"名字3"},
  {id:"4", codeid:"321", name:"名字4"},
  {id:"5", codeid:"1234", name:"名字5"},
]
this.codeArray = [
{id:"123", codename:"代码1"},
{id:"321", codename:"代码2"},
{id:"1234", codename:"代码3"}
]
复制代码

将上述数组根据某key值分类,使用该方法,根据codeid分组,并匹配给对应的对象的dataArray属性。

复制代码
splitArraylist(data, key){
 let groups = {}
 data.forEach((item)=>{
   let value = item[key]
   groups[value] = groups[value]  || []
   groups[value].push(item)
 })
 return groups
},
splitCodeList(){
// 根据codeid给dataArray分组
 this.keylist = this.splitArraylist(this.dataArray,"codeid")
// 得到的数据为:
// this.keylist = [
// "123":[
// {id:"1", codeid:"123", name:"名字1"},
// {id:"2", codeid:"123", name:"名字2"}
// ],
// "321":[
// {id:"3", codeid:"321", name:"名字3"},
// {id:"4", codeid:"321", name:"名字4"}
// ],
// "1234":[
// {id:"5", codeid:"1234", name:"名字5"}
// ]

 this.codeArray.forEach((element)=>{
// 根据对象的id在keylist当中取到对应的数组,并赋值给属性
  element.dataArray = this.keylist[element.id]
})
}
复制代码

 

则现在的codelist为:

复制代码
this.codelist = [{
    id:"123", 
    codename:"代码1",
    dataArray;[
      {id:"1", codeid:"123", name:"名字1"},
      {id:"2", codeid:"123", name:"名字2"}
    ]
  },
  {
    id:"321", 
    codename:"代码2",
    dataArray;[
      {id:"3", codeid:"321", name:"名字3"},
      {id:"4", codeid:"321", name:"名字4"}
    ]
  },
  {
    id:"1234", 
    codename:"代码3",
    dataArray;[
      {id:"5", codeid:"1234", name:"名字5"}
    ]
  }
]}
复制代码

 

posted @   zwbsoft  阅读(609)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2021-05-17 VUE-MATOMO实现埋点
点击右上角即可分享
微信分享提示