在项目中遇到匹配规则给某对象,但多选时,得到的数据将会组成为一个数组,则需要给该数组进行分组。
使用接口,得到合集的数组。
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"} ] } ]}