javascript-如何在JavaScript传播算子中与嵌套键合并?

时间:2019-05-10 11:12:35

标签: javascript object ecmascript-6

我有以下对象,如

obj1 = { key1: { a: 1}}

我想将以下对象与上面的对象合并

key1 = { b: 2}

我想通过将key1与第一个对象中的现有键合并来获得如下结果。

{key1: {a: 1, b: 2}} 

如何在JavaScript中使用传播运算符来做到这一点?预先感谢。

5 个答案:

答案 0 :(得分:3)

您可以传播现有对象和新对象

注意:使用传播运算符只会合并可枚举的属性。

const obj1 = { key1: { a: 1}}
const key1 = { b: 2};
const res = {...obj1,key1:{...obj1.key1,...key1}};
console.log(res)

如果要修改原始对象,则只需更改obj.key1

const obj1 = { key1: { a: 1}}
const key1 = { b: 2};
obj1.key1 = {...obj1.key1,...key1}
console.log(obj1)

答案 1 :(得分:1)

只需像这样使用散布运算符:

let obj1 = {
  key1: {
    a: 1
  }
};

let key1 = {
  b: 2
};

obj1.key1 = { ...obj1.key1, ...key1 };
console.log(obj1);
.as-console-wrapper { max-height: 100% !important; top: auto; }

答案 2 :(得分:0)

您可以将其置入通缉的财产中。

var obj1 = { key1: { a: 1 } },
    key1 = { b: 2 };
    
obj1.key1 = { ...obj1.key1, ...key1 };

console.log(obj1);

答案 3 :(得分:0)

您应该使用Object.assign

var obj1 = { key1: { a: 1}};
var key1 = { b: 2};

Object.assign(obj1.key1, key1);

console.log(obj1)

答案 4 :(得分:0)

尝试一下:

let obj1 = { key1: { a: 1}}

let b = { b: 2}
let a = obj1.key1; //{a:1}

// merge using spread operator
let key1 = {...a, ...b}; //{a:1, b:2}

obj1.key1 = key1; //{"a":1,"b":2"}

console.log(obj1) //{ "key1":{"a":1,"b":2"}}