我有一个带有一堆属性的对象,比如说
{a:1, b:2, c:3, d:"hello", e:"world"}
和另一个具有这些属性子集的
{a:4, b:5, c:6}
使用最少量的代码将第二个对象的属性值分配给第一个对象的最简化方法是什么?我知道我可以逐个分配各个属性,但是有更好的,可能是ES6方式吗?
答案 0 :(得分:3)
您可以使用Object.assign
,它将第二个对象的所有属性分配给第一个对象。
var object = { a: 1, b: 2, c: 3, d: "hello", e: "world" },
newValues = { a: 4, b: 5, c: 6 };
Object.assign(object, newValues);
console.log(object);

答案 1 :(得分:2)
从ES2018开始,您可以使用object spread syntax执行此操作:
let obj1 = {a:1, b:2, c:3, d:"hello", e:"world"};
let obj2 = {a:4, b:5, c:6};
obj1 = {...obj1, ...obj2};
console.log(obj1);
请注意,这是一种非常新的语法,只有最新的浏览器才支持。例如,Edge的任何版本都不支持它。您需要为旧版浏览器进行转换。
这假定您希望obj2
中的属性覆盖obj1
中的属性。如果不这样做,请将其更改为obj1 = {...obj2, ...obj1};
。
答案 2 :(得分:-1)
const obj = Object.assign({}, obj1, obj2);
console.log(obj); // {a:4, b:5, c:6, d:"hello", e:"world"}
console.log(obj1); // {a:1, b:2, c:3, d:"hello", e:"world"}
此解决方案创建新对象而不会影响obj1
const obj = Object.assign(obj1, obj2);
console.log(obj); // {a:4, b:5, c:6, d:"hello", e:"world"}
console.log(obj1); // {a:4, b:5, c:6, d:"hello", e:"world"}
此解决方案创建新的obj对象并存储对obj1的引用
答案 3 :(得分:-1)
下午好。
是的,有一个更好的方法,es6它被称为Spread运算符,如果那是你想要的,给我打分
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax