ES6 将数组根据某个属性进行分组的方法
程序员文章站
2024-03-04 11:26:29
...
一、简介
最近在项目中,有需求需要将数组根据某个属性进行重新分组,然后循环遍历,于是自己写了一个分组的方法,总结如下(笔者使用的React):
buildArrayGroup = (oldArray = []) => {
console.log('oldArray', JSON.stringify(oldArray));
let resultArray = [];
for (let item of oldArray) {
let lcid = item.lcid, lcmc = item.lcmc, ldmc = item.ldmc;
let idx = resultArray.findIndex(val => {
return val.lcid === lcid
});
let resultMap = idx !== -1 ? resultArray[idx] : {};
if (Object.keys(resultMap).length === 0) {
let fjxxList = [];
fjxxList.push(item);
resultMap['lcid'] = lcid;
resultMap['lcmc'] = lcmc;
resultMap['ldmc'] = ldmc;
resultMap['fjxxList'] = fjxxList;
resultArray.push(resultMap);
} else {
let resultObj = resultArray[idx] || {};
let array = resultObj['fjxxList'];
array.push(item);
}
}
console.log('resultArray', JSON.stringify(resultArray));
return resultArray;
};
分组之前都是零散的一个一个元素:
按照lcid属性分组之后,就是一个lcid对应这个lcid对应的所有集合信息: