let arry = [{
name: '张三', age: 18,
list: [{ num: 21, list1: [{ money: 1, money2: '', money3: 4 }] },
{ num: 21, list1: [{ money: 2, money2: '5', money3: '' }] },
{ num: 21, list1: [{ money: 2, money2: '', money3: '2' }] }]
}, {
name: '里斯',
age: 19,
list: [{ num: 22, list1: [{ money: 1, money2: '', money3: '' }] },
{ num: 22, list1: [{ money: 3, money2: '8', money3: 10 }] }
]
},
{
name: '小名',
age: 21,
list: [{ num: 23, list1: [{ money: 1, money2: '', money3: '' }] },
{ num: 23, list1: [{ money: 3, money2: '8', money3: 10 }] },
{ num: 23, list1: [{ money: 1, money2: '', money3: '' }] }
]
}
]
let allData = []
for (let a in arry) {
let name = arry[a].name
var mList = arry[a].list
var List = [];
for (let m in mList) {
if (List.length == 0) {
List.push(mList[m]);
}
else {
var isBool = false;
for (let s in mList[m].list1) {
for (let c in List) {
for (let b in List[c].list1) {
if (mList[m].list1[s].money == List[c].list1[b].money) {
for (let key of Object.keys(List[c].list1[b])) {
List[c].list1[b][key] = mList[m].list1[s][key]
}
isBool = false;
break;
} else {
isBool = true;
}
}
}
}
if (isBool) {
List.push(mList[m]);
console.log(mList[m],m);
}
}
}
arry[a].list = List;
}
console.log(arry);
打印结果
[
{
"name":"张三",
"age":18,
"list":[{"num":21,
"list1":[{"money":1,"money2":"","money3":4}]},
{ num: 21,
list1: [{ money: 2, money2: '2', money3: '2' }] }]},
{
"name":"里斯",
"age":19,
"list":[{"num":22,
"list1":[{"money":1,"money2":"","money3":""}]},
{"num":22,
"list1":[{"money":3,"money2":"8","money3":10}]}]},
{
"name":"小名",
"age":21,
list: [{ num: 23, list1: [{ money: 1, money2: '', money3: '' }] },
{ num: 23, list1: [{ money: 3, money2: '8', money3: 10 }] },
{ num: 23, list1: [{ money: 1, money2: '', money3: '' }] } ]
}]
数据第一条相同的合并了,但第三条切换了一下money相同的位置数据就不对了 既合并了 又还多了一条 求解