原始数据:
第一步:
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);