這個問題在這里已經有了答案: Javascript:合并物件陣列,用相同的鍵對值求和 1 個答案 43 分鐘前關閉。
如果我有兩個(大)陣列指定一個鍵和一個數值
var a = [
{ gtin: 'a1', quantity: 1 },
{ gtin: 'a3', quantity: 1 },
];
var b = [
{ gtin: 'a1', quantity: 1 },
{ gtin: 'a4', quantity: 1 },
];
獲得對數量求和的單個陣列的最簡單方法是什么?(Lodash 好的,對陣列的迭代次數最少)
IE
[
{ gtin: 'a1', quantity: 2 },
{ gtin: 'a3', quantity: 1 },
{ gtin: 'a4', quantity: 1 },
];
uj5u.com熱心網友回復:
您可以使用 aMap來跟蹤gtin其累積quantity,然后將其轉換回陣列
const a = [
{ gtin: 'a1', quantity: 1 },
{ gtin: 'a3', quantity: 1 },
];
const b = [
{ gtin: 'a1', quantity: 1 },
{ gtin: 'a4', quantity: 1 },
];
const res = Array.from(
a
.concat(b)
.reduce(
(map, el) => map.set(el.gtin, (map.get(el.gtin) || 0) el.quantity),
new Map()
)
).map(([gtin, quantity]) => ({ gtin, quantity }));
console.log(res);
參考
地圖
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459138.html
標籤:javascript
下一篇:重構Javascript物件陣列
