首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript/JSON 數組去重並按 name 字段合併累加 money

     編輯:程式設計綜合問答

需求

後端返回對象數組,包含重複 name 項,需合併同名項並累加 money 字段。

// 輸入示例
const data = {
  0: { name: "ZSZS", money: "100" },
  1: { name: "LSLS", money: "120" },
  2: { name: "LSLS", money: "120" },
  3: { name: "ZSZS", money: "200" }
};

解決方案:遍歷聚合 (ES6)

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 提升性能。
  1. 上一篇文章:
  2. 下一篇文章:
CSS 內部樣式表定義詳解: