如图所示,当arry里两个对象的a和b相等时,让他们的num值相加,最终变成arry1
你可以把数组给循环出来,封装成一个对象,直接循环判断就可以.
var array = [
{
'a': '1a',
'b': '1b',
'num': 1,
},
{
'a': '1a',
'b': '1b',
'num': 1,
},
{
'a': '2a',
'b': '2b',
'num': 1,
},
{
'a': '2a',
'b': '2b',
'num': 5,
},
{
'a': '2a',
'b': '1b',
'num': 3,
},
{
'a': '3a',
'b': '2b',
'num': 2,
},
{
'a': '1a',
'b': '2b',
'num': 8,
}
]
function filterData (array) {
var array1 = [array[0]]
for (let i = 0; i < array.length; i++) {
let isChage = false;
for (let j = 0; j< array1.length; j++) {
if (array[i].a === array1[j].a && array[i].b=== array1[j].b) {
console.log(array[i])
array1[j].num = array[i].num + array1[j].num
isChage = true;
break;
}
}
if (!isChage) {
array1.push(array[i])
}
}
return array1
}
差不多是这个意思吧
function text(array) {
let obj = {}
let list = []
for (let index = 0; index < array.length; index++) {
let item = array[index]
let str = item.a + item.b
if (!obj[str]&&obj[str]!=0) {
// list.push()
obj[str]=index
} else {
array[obj[str]].num = array[obj[str]].num + item.num
array.splice(index, 1)
index--
}
}
return array
}
通过键值对去判断,一次循环可以搞定