如何从两个具有键的对象中获取新的javascript对象,并在键匹配时取平均值

问题描述 投票:0回答:1

例如,我有两个对象:

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

javascript ecmascript-6 ecmascript-5
1个回答
0
投票

使用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)
© www.soinside.com 2019 - 2024. All rights reserved.