簡體   English   中英

Javascript:如何合並兩個對象並對同一個鍵的值求和?

[英]Javascript: How to merge two objects and sum the values of the same key?

const map1 = { "a": 10, "b": 6 };
const map2 = { "a": 10, "b": 6, "c": 7, "d": 8 };

如果它們具有相同的key ,我想合並它們並對它們的values求和:

const result = { "a": 20, "b": 12, "c": 7, "d": 8 };

在不使用任何外部庫或++的情況下如何實現這一目標? 謝謝!

使用Array#reduceObject#entries

 const map1 = { "a": 10, "b": 6 }, map2 = { "a": 10, "b": 6, "c": 7, "d": 8 }; // iterate over map2 entries with acc set to map1 at start const merged = Object.entries(map2).reduce((acc, [key, value]) => // if key is already in map1, add the values, otherwise, create new pair ({...acc, [key]: (acc[key] || 0) + value }), {...map1 }); console.log(merged);

我想出了這段代碼,雖然版本更長,但更具可讀性和更簡單 const map1 = { "a": 10, "b": 6, x: 22}; const map2 = { "a": 10, "b": 6, "c": 7, "d": 8 };

function addMerge(obj1, obj2){
  let res = {}
  let A = Object.keys(obj1)
  let B = Object.keys(obj2)
  if(A.length > B.length){
    Object.keys(obj1).forEach((k, i) => {
      if(obj2.hasOwnProperty(k))
        res[k] = obj2[k] + obj1[k]
      else
        if(B[i] !== undefined){
          res[k] = obj1[k]
          res[B[i]] = obj2[B[i]]
      }
        else
          res[k] =  obj1[k]

    });

  }
  else{
  Object.keys(obj2).forEach((k, i) => {

  if(obj1.hasOwnProperty(k))
    res[k] = obj2[k] + obj1[k]
  else
    if(A[i] !== undefined){
      res[k] = obj2[k]
      res[A[i]] = obj1[A[i]]
    }
    else
      res[k] = obj2[k]
});
}

console.log("Result", res)

}

addMerge(map1, map2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM