欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    };

分组之前都是零散的一个一个元素:

ES6 将数组根据某个属性进行分组的方法

按照lcid属性分组之后,就是一个lcid对应这个lcid对应的所有集合信息:

ES6 将数组根据某个属性进行分组的方法