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

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

Susan Sarandon
Susan Sarandon原創
2024-12-20 01:32:091003瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn