Как полностью скопировать/перезаписать объект с помощью Object.assign()? Если будет другой подход, он будет высоко оценен. :) Цель состоит в том, чтобы обновить существующий объект до его нового значения.
Ниже приведен фрагмент кода, и ожидаемый результат должен быть таким же, как и значение объекта2.
Ожидаемый результат: {a: 8, b: 7}
const object1 = {
a: 1,
b: 2,
c: {
d: 3
}
};
const object2 = {
a: 8,
b: 7
};
Object.assign(object1, object2);
console.log(object1);
Для сохранения той же ссылки на объект вы можете удалить все свойства заранее, а затем присвоить Object.assign
свойства Object.assign
.
const object1 = { a: 1, b: 2, c: { d: 3 } };
const object2 = { a: 8, b: 7 };
Object.assign(
Object.keys(object1).reduce((o, k) => (Reflect.deleteProperty(o, k), o), object1),
object2
);
console.log(object1);
IE
var object1 = { a: 1, b: 2, c: { d: 3 } },
object2 = { a: 8, b: 7 };
Object.keys(object2).reduce(
function (object, key) {
object[key] = object2[key];
return object;
},
Object.keys(object1).reduce(function (object, key) {
delete object[key];
return object;
}, object1)
);
console.log(object1);
Если вы хотите переопределить свойства object1
с object2
, вам необходимо сделать это следующим образом:
object1 = Object.assign({}, object2);
Но с этим вам нужно объявить object1
с ключевым словом var
чтобы вы могли присвоить ему новое значение.
Демо - версия:
var object1 = {
a: 1,
b: 2,
c: {
d: 3
}
};
const object2 = {
a: 8,
b: 7
};
object1 = Object.assign({}, object2);
console.log(object1);
const object1 =
на var object1=
, посмотрите демонстрацию моего ответа.
object2
и полностью отказаться от существующегоobject1
? Вы не должны использоватьObject.assign
для этогоobject1
так как он был объявлен с помощьюconst
.