原始数据:

第一步:
var Obj = jsonArr.map(item => {
let obj = {
work: []
}
obj.name = item.beginer
obj.work.push(item)
return obj
})
console.log(Obj);
200多条,只是遍历一遍,并提取其中name属性

第二步(方法一):
if (Obj && Obj.length > 0) {
var newArr = [];
Obj.forEach(function (item) {
var flag = true;
if (newArr.length > 0) {
// 此处 不能用foreach,不然没法使用break跳出循环
for (var i = 0; i < newArr.length; i++) {
if (newArr[i].name == item.name) {
newArr[i].work.push(item.work[0])
flag = false;
break;
}
}
}
if (flag) {
newArr.push(item)
}
})
}
console.log(newArr);
根据name,把name相同的都合并到了一起,只留下来一个name,重复的都去掉了,并且name相同的work属性的属性值全部合并在了一起

方法二:
let newArr = jsonArr.reduce((total, item) => {
let index = total.findIndex(it => it.name == item.beginer)
if (index === -1)
total.push({
name: item.beginer,
work: [item]
});
else total[index].work.push(item);
return total
}, [])
console.log(newArr);

本文介绍了一种使用JavaScript处理复杂JSON数组的方法,通过两步操作实现数据的去重和整合,适用于需要对大量数据进行快速整理的场景。

被折叠的 条评论
为什么被折叠?



