我想拥有一个不变的对象原始数组并扩展一个新对象,但是似乎下面的代码并没有产生正确的结果。 obj3成为对象而不是对象数组。我什至尝试过lodash的扩展。
var obj1 = [{
abc: 'abc value'
}, {
def: 'def value'
}];
var obj2 = {
def: 'new def value'
};
/*var obj3 = _.extend({}, obj1, obj2);
console.log(obj3)
*/
var obj3 = Object.assign({},obj1,obj2);
https://jsbin.com/bawadeqicu/edit?html,js,output
我的愿望输出是
obj1: [{"abc":"abc value"},{"def":"def value"}] // immutable
obj3: [{"abc":"abc value"},{"def":"new def value"}]
最佳答案
一成不变
除了传递对象并对其进行变异之外,我们最好创建一个全新的对象:
const person = {
name: 'John',
age: 28
}
const newPerson = Object.assign({}, person, {
age: 30
})
console.log(newPerson === person) // false
console.log(person) // { name: 'John', age: 28 }
console.log(newPerson) // { name: 'John', age: 30 }
source