как обновить значение в массиве объектов с помощью javascript и lodash

Аватар пользователя Nikolai Gagarinov
Nikolai Gagarinov
26 февраля 2025

Предположим, у нас есть массив объектов, представляющий список пользователей:

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 }
]
0 0
Познакомьтесь с основами JavaScript бесплатно