合并具有相同键的两个对象并将值转换为数组

时间:2021-01-15 19:09:57

标签: javascript

var obj1 = {name: “John”, hobby: “Football”}

var obj2 = {hobby: “Basketball”}

这是我的两个对象。我想合并它们,我的结果是

   var obj1 = {name: “John”, hobby :[“Foootbal”,”Basketball”]}

我该怎么做?

2 个答案:

答案 0 :(得分:4)

var obj1 = {name: "John", hobby: "Football"}

var obj2 = {hobby: "Basketball"}
var obj3 = {hobby: "Tennis"}

const merge = (obj1, obj2) => {
    Object.keys(obj1).forEach(key => { if (obj2[key]) obj1[key] = [...[obj1[key]], obj2[key]].flat() })
}

merge(obj1, obj2)
merge(obj1, obj3)

console.log(obj1)

答案 1 :(得分:0)

const obj1 = {name: "John", hobby: "Football"}

const obj2 = {hobby: "Basketball"}

const obj3 = {}
for (const key in obj1){
  if (obj2[key] === undefined){
    obj3[key] = obj1[key]    
  }else{    
    obj3[key] = [ obj1[key], obj2[key] ]
  }
}
console.log(obj3)

略有不同的解决方案。不改变原始对象。

相关问题