根据相同的title把money相加,把arr合成arr1
1、简单处理
var map = {}, arr1 = [];
for (var i = 0; i < arr.length; i++) {
if (!map[arr[i].title]) {
arr1.push(arr[i]);
map[arr[i].title] = true;
} else {
for (var j = 0; j < arr1.length; j++) {
if (arr[i].title === arr1[j].title) {
arr1[j].money = (Number(arr1[j].money) + Number(arr[i].money)).toString();
}
}
}
}
2、以上面方法可以改成forEach(), filter等方法
简洁的方法还可以这样写:
var map = {};
var arr1 = arr.reduce(function(a, b) {
if (!map[b.title]) {
map[b.title] = true && a.push(b);
} else {
a.forEach(function(item) {
if (item.title === b.title) {
item.money = (Number(item.money) + Number(b.money)).toString();
}
});
}
return a;
}, []);
去重简单,去重合并两个循环是少不了的了