首页 > 解决方案 > 如何从两个具有键的对象中获取新的 JavaScript 对象,并在键匹配时取平均值

问题描述

例如,我有两个对象:

let firstObject = 
 {
   'x' : 3,
   'y' : 2,
   'z' : 1
 }

let secondObject = 
 {
   'x' : 1,
   'y' : 5,
   'c' : 3
 } 

是否可以从两个对象中获取所有键的新对象,并在键匹配时计算两个值的平均值,所以新对象看起来像这样?

newObject = 
 {
   'x' : 2,     // ((3+1)/2)
   'y' : 3.5,   // ((2+5)/2)
   'z' : 1,     // z only in one object, so do nothing and just add to new objects with key : value
   'c' : 3      // c only in one object, so do nothing and just add to new objects with key : value 
 } 

键的值始终 > 0

标签: javascriptecmascript-6ecmascript-5

解决方案


使用 Object.entries 和 forEach。改变第一个对象。取决于 undefined + n 是假的 NaN,所以 || 将使用第二个值。

let firstObject = 
 {
   'x' : 3,
   'y' : 2,
   'z' : 1
 }

let secondObject = 
 {
   'x' : 1,
   'y' : 5,
   'c' : 3
 } 
 
 Object.entries(secondObject).forEach(([k,v])=>firstObject[k]=(firstObject[k]+v)/2||v)
 
 console.log(firstObject)


推荐阅读