как обновить значение в массиве объектов с помощью javascript и lodash
Предположим, у нас есть массив объектов, представляющий список пользователей:
const users = [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 },
{ id: 3, name: 'Charlie', age: 35 }
];
Допустим, мы хотим обновить возраст пользователя с id
, равным 2, на новый возраст, например, на 32.
Сначала можно использовать метод map()
для создания нового массива с обновленным объектом. Вот как это можно сделать:
const updatedUsers = users.map(user => {
if (user.id === 2) {
return { ...user, age: 32 }; // обновляем возраст
}
return user; // возвращаем неизмененный объект
});
console.log(updatedUsers);
Если мы хотим использовать библиотеку Lodash, она предоставляет удобные функции, которые могут упростить работу с массивами и объектами. Для обновления значения в объекте можно использовать функцию _.find()
для поиска нужного объекта и функцию _.assign()
или спред-оператор (...
) для его обновления.
Вот пример, как это сделать с помощью Lodash:
import _ from 'lodash';
const updatedUsers = _.map(users, user => {
if (user.id === 2) {
return _.assign({}, user, { age: 32 }); // обновляем возраст
}
return user; // возвращаем неизмененный объект
});
console.log(updatedUsers);
Также можно использовать комбинацию _.find
для получения объекта и затем обновить его:
const userToUpdate = _.find(users, { id: 2 });
if (userToUpdate) {
userToUpdate.age = 32; // обновляем возраст
}
console.log(users); // Изменения также будут в исходном массиве
Обратите внимание, что в последнем примере происходит изменение исходного массива, поскольку мы изменяем свойство в объекте, на который ссылается userToUpdate
.
Вот как будут выглядеть массивы после обновления:
- Исходный массив:
[
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 },
{ id: 3, name: 'Charlie', age: 35 }
]
- Обновленный массив:
[
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 32 }, // Возраст изменен на 32
{ id: 3, name: 'Charlie', age: 35 }
]