https://www.jianshu.com/p/c50515d369c4
<script type="text/javascript">
var oldData = [
{ a: 1, b: 2, c: 3, d: 2, e: 1 },
{ a: 1, b: 2, c: 3, d: 3, e: 2 },
{ a: 1, b: 2, c: 3, d: 4, e: 3 },
//{ a: 2, b: 3, c: 4, d: 4, e: 2 },
]
var oldDataRule = []
oldData.forEach(el => {
var oldObj = {
a: el.a,
b: el.b,
c: el.c,
list: []
}
oldObj.list.push({ repeatd: el.d, repeate: el.e });
oldDataRule.push(oldObj)
})
console.log(oldDataRule) //abc 带list
// 合并相同的数据
var newData = []
var newObj = {}
oldDataRule.forEach((el, i) => {
if (!newObj[el.a] || !newObj[el.b] || !newObj[el.c]) {
newData.push(el);
newObj[el.a] = true;
newObj[el.b] = true;
newObj[el.c] = true;
console.log(newData,'newData') //相当于复制一份 oldDataRule来比较
} else {
newData.forEach(els => {
if (els.a === oldDataRule[i].a && els.b === oldDataRule[i].b && els.c === oldDataRule[i].c) {
els.list = els.list.concat(oldDataRule[i].list);
// el.list = [...el.list, ...oldDataRule[i].list]; // es6语法
}
})
}
})
</script>
console.log(oldDataRule)
console.log(newData)