#javascript #arrays #object
#javascript #массивы #объект
Вопрос:
Итак, мне нужно написать функцию, которая обновляет мой объект другим объектом (но этот объект находится внутри массива), например:
const mazda = { model: 5, seria: 22, wheels: 4,};
и я хочу добавить данные из :
const newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4},];
но таким образом, серия из 1-го объекта остается неизменной. Результат должен быть
{ seria: 22 ,model: 6, wheels: 4, LCDscreen: true, weight: 500 , mirrors: 4};
Каков наилучший подход?
Комментарии:
1. Можете ли вы показать, каким должен быть результат?
2. вы хотите изменить существующие значения или добавить к ним дополнительные?
3. const mazda = { серия: 22 , модель: 6, колеса: 4, ЖК-экран: true, вес: 500, зеркала: 4};
4. Я хочу добавить значения из второго объекта в первый, не меняя seria.
5. Почему
wheels: 4
не обновляется с5
помощью в выходных данных?
Ответ №1:
Вы можете просто перебирать массив и распространять объекты массива внутри объекта mazda. Это самый быстрый метод после использования цикла for .
let mazda = { model: 5, seria: 22, wheels: 4,};
const newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4}]
newItems.forEach(item => {
mazda = {...mazda, ...item};
});
console.log(mazda)
Комментарии:
1. Вы используете синтаксис распространения , а не деструктурирование
2. Извините, я виноват. Спасибо за обновление.
Ответ №2:
Это можно сделать в одной строке:
newItems.reduce((acc, patch) => Object.assign(acc, patch), mazda)
Это перебирает все объекты в newItems
списке и объединяет их в mazda
один за другим.
Если вы не хотите mazda
, чтобы объект изменялся, а вместо этого получали новый объект, используйте пустой object ( {}
) в качестве первого параметра для Object.assign
:
const newMazda = newItems.reduce((acc, patch) => Object.assign({}, acc, patch), mazda)
Ответ №3:
Я думаю, это делает то, что вы хотите. Возьмите каждый элемент в newList
и добавьте его как новое свойство к mazda
объекту.
const mazda = { model: 5, seria: 22, wheels: 4,};
const newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4}]
const result = newItems.reduce( (acc,item) => ({...acc,...item}),mazda);
console.log(result)
Комментарии:
1. можете ли вы объяснить , в чем заключается польза
...
?2. @SandrinJoy Да, конечно, это синтаксис распространения