JavaScript中更新对象的多个值

29
Given an object 给定一个对象
var myObject = {
    label: 'foo',
    name: 'bar',
    id: 12
},

如果我想要改变多个值,我会按照以下步骤进行:

myObject.label = "bar";
myObject.name = "foo";

当更新大量数据时,代码会变得非常冗长。有没有更简洁的方法来完成这个操作呢?

例如:

myObject.({label: 'foo'}, {name: 'bar'});
2个回答

56

Object.assign 很适合这种情况:

var myObject = {
    label: 'foo',
    name: 'bar',
    id: 12
}
Object.assign(myObject, {label: 'Test', name: 'Barbar'})
console.log(myObject)


1
在状态中使用Vuex对象是建议的方式,如果您想保持Vue.js响应性。 - hermeslm

17
除了 Object.assign,您还可以使用对象扩展运算符:

var myObject = {
    label: 'foo',
    name: 'bar',
    id: 12
};

myObject = {...myObject, label: 'baz', name: 'qux'};
console.log(myObject);

// Or, if your update is contained in its own object:

var myUpdate = {
    label: 'something',
    name: 'else'
}

myObject = {...myObject, ...myUpdate}
console.log(myObject)


19
Object.assign不同,这并不实际“更新”对象,而是创建一个全新的对象,因此如果myObject被别名引用,原始版本仍将保持不变。这可能是可以接受的,也可能不可以接受。 - Michael Homer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接