js将数组中具有相同字段的对象合并成新的对象数组

 let test = res.row;//接口拿到的初始数据
//先将数组转换成目标格式,即,数据对象为 { id: el.id, txtArr: [] }
var testOld = []; 
test.forEach(el => {
    var oldObj = { 
        groupTime: el.groupTime, 
        txtArr: [] ,
    }
    var txtObj = { 
         fdeviceName: el.fdeviceName, 
         recordId: el.frecordId,
         groupTime:el.groupTime,
         ruleStrs:el.ruleStrs,
         staffId:el.staffId,
         staffName:el.staffName,
         triggerAddr:el.triggerAddr,
         triggerTime:el.triggerTime
    };
    oldObj.txtArr.push(txtObj);
    testOld.push(oldObj);
});
//合并相同的项,生成新的数组
var newData = []; // 目标数组
var newObj = {};
testOld.forEach((el, i) => {
    if (!newObj[el.groupTime]) {
        newData.push(el);
        newObj[el.groupTime] = true;
    } else {
        newData.forEach(el => {
             if (el.groupTime === testOld[i].groupTime) {
                 el.txtArr = el.txtArr.concat(testOld[i].txtArr);
             }
         })
    }
});
console.log(newData);//最终数据
数据.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容