js数组同项取出合并数据

159 阅读1分钟

利用{}或Map的key唯一性进行数组同项取出合并数据

let newArr = []
let obj = {}                                              // let map: any = new Map()
this.personList.map(item => {
 //判断是否已经存在唯一的key,若不存在则存入obj中,
    if (!obj[item.taskId]) {                              //if(!map.has(item.taskId))
        obj[item.taskId] = 1  //存入一个id的key值保持唯一  // map.set(item.taskId, 1)
        newArr.push({ // 保存未有的id项数据
            taskId: item.taskId,
            taskName: item.taskName,
            data: [item]
        })
    } else { // 若已经存在则将改项obj的唯一key数据,存在对应newArr数组中的data中
        for (let i = 0; i < newArr.length; i++) {
            if (newArr[i].taskId === item.taskId) {
                newArr[i].data.push(item) // 将id相同的项,合并到id相同的数组newArr中的data中
            }
        }
    }
})