
let result = [];
function sumByType(arr) {
for (let i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i].type)) {
newArr.push(arr[i].type);
result.push({
type: arr[i].type,
value: arr[i].value,
});
} else {
console.log(arr[i]);
for (let j = 0; j < result.length; j++) {
if (arr[i].type === result[j].type) {
result[j].value += arr[i].value;
}
}
}
}
}
const arr = [
{ type: "a", value: 1 },
{ type: "b", value: 2 },
{ type: "a", value: 3 },
{ type: "b", value: 4 },
{
type: "c",
value: 2,
},
];
sumByType(arr);// [{ type: "a", value: 4 }, { type: "b", value: 6}]
或者
var newArr = [];
// 使用foreach遍历数组
arr.forEach((item) => {
// 筛选出属性值相同的key
if (newArr.length > 0) {
var filterValue = newArr.filter((v) => {
console.log(v, item,'v,item');
return v.type == item.type;
});
// 如果存在属性相同的key 则进行相加的操作
if (filterValue.length > 0) {
console.log(item,'item')
newArr.forEach((n) => {
if (n.type == filterValue[0].type) {
n.value = filterValue[0].value + item.value;
}
});
} else {
newArr.push(item);
}
} else {
newArr.push(item);
}
});
console.log(newArr);
Comments | NOTHING