後端返回對象數組,包含重複 name 項,需合併同名項並累加 money 字段。
// 輸入示例
const data = {
0: { name: "ZSZS", money: "100" },
1: { name: "LSLS", money: "120" },
2: { name: "LSLS", money: "120" },
3: { name: "ZSZS", money: "200" }
};
const result = Object.values(data).reduce((acc, item) => {
const key = item.name;
const money = parseFloat(item.money);
if (acc[key]) {
acc[key].money += money;
} else {
acc[key] = { name: key, money };
}
return acc;
}, {});
// 輸出: { ZSZS: {name: "ZSZS", money: 300}, LSLS: {name: "LSLS", money: 240} }
const finalArray = Object.values(result);
// [{name: "ZSZS", money: 300}, {name: "LSLS", money: 240}]
function mergeByName(arr) {
return Object.values(arr).reduce((map, item) => {
const key = item.name;
const val = parseFloat(item.money);
map[key] = map[key] ? { name: key, money: map[key].money + val } : { name: key, money: val };
return map;
}, {});
}
money 需 parseFloat 轉數值再累加,避免字符串拼接。arr.reduce(...)。Map 提升性能。