根据数组对象中相同属性值组建新数组——方便递归-js将数组对象中某个值相同的对象合并成一个新对象

143 阅读1分钟
 let data = [
            { dataTime: '7月8日', a: 1, b: 2 },
            { dataTime: '7月8日', c: 1, d: 2 },
            { dataTime: '7月9日', e: 1, f: 2 },
            { dataTime: '7月9日', g: 1, h: 2 },
        ]


        let tempArr = [];
        var afterData = [];
        for (let i = 0; i < data.length; i++) {
            if (tempArr.indexOf(data[i].dataTime) === -1) {
                afterData.push({
                    dataTime: data[i].dataTime,
                    origin: [data[i]]
                });
                tempArr.push(data[i].dataTime);
            }
            else {
                for (let j = 0; j < afterData.length; j++) {
                    if (afterData[j].dataTime == data[i].dataTime) {
                        afterData[j].origin.push(data[i]);
                        break;
                    }
                }
            }
        }
        console.log(afterData)
        
        效果:
            let afterData = [
            {
                dataTime: "7月8日",
                origin: [
                    { dataTime: '7月8日', a: 1, b: 2 },
                    { dataTime: '7月8日', c: 1, d: 2 }
                ]
            }, {
                dataTime: "7月9日",
                origin: [
                    { dataTime: '7月9日', e: 1, f: 2},
                    { dataTime: '7月9日',  g: 1, h: 2}
                ]
            }
        ]