首頁 > web前端 > js教程 > 如何有效地對 JavaScript 物件陣列中重複鍵的值求和?

如何有效地對 JavaScript 物件陣列中重複鍵的值求和?

Susan Sarandon
發布: 2024-12-20 01:32:09
原創
958 人瀏覽過

How to Efficiently Sum Values of Duplicate Keys in a JavaScript Array of Objects?

對物件陣列中重複鍵的值進行求和

在JavaScript 中,處理物件陣列時,可能會遇到這樣的需求合併重複的鍵並對它們的關聯值求和。給定一個物件數組,例如:

objArr = [
    {key: "Mon Sep 23 2013 00:00:00 GMT-0400", val: 42},
    {key: "Mon Sep 24 2013 00:00:00 GMT-0400", val: 78},
    {key: "Mon Sep 25 2013 00:00:00 GMT-0400", val: 23},
    {key: "Mon Sep 23 2013 00:00:00 GMT-0400", val: 54} // duplicate key
]
登入後複製

人們的目標是實現以下目標:

reducedObjArr = [
    {key: "Mon Sep 23 2013 00:00:00 GMT-0400", val: 96},
    {key: "Mon Sep 24 2013 00:00:00 GMT-0400", val: 78},
    {key: "Mon Sep 25 2013 00:00:00 GMT-0400", val: 23}
]
登入後複製

一個更有效的方法是利用Map 和Reduce,而不是迭代和推送值:

let counts = objArr.reduce((prev, curr) => {
  let count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val + count);
  return prev;
}, new Map());
登入後複製

這將建立一個Map,其中鍵作為物件鍵,值作為求和值。最後,Map 透過以下方式轉換回陣列:

let reducedObjArr = [...counts].map(([_, value]) => {
  return {key, value}
})
登入後複製

這種方法更加簡潔,並且消除了與手動迭代相關的錯誤風險。

以上是如何有效地對 JavaScript 物件陣列中重複鍵的值求和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板