Учитывая идентификатор ключа, обновите несколько свойств одного из объектов внутри массива. Как?

#javascript #arrays #typescript

Вопрос:

У меня есть следующий массив:

 let tblUsers = [
    { id: 101, user: 'user1', password: 'password1', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Active', firstName: 'Bob', lastName: 'Marley' }, 
    { id: 102, user: 'user2', password: 'password2', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Inactive', firstName: 'Bill', lastName: 'Murray' }, 
    { id: 103, user: 'user3', password: 'password3', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Active', firstName: 'Jeniffer', lastName: 'Connelly' }, 
];
 

Для идентификатора 102, как бы я обновил некоторые или все значения ключей для этого объекта внутри массива?

Комментарии:

1. Если мутация в порядке, используйте .find() , чтобы найти по идентификатору и сохранить ссылку на нее, а затем обновить.

2. О, мой бог… find() и ссылка. Конечно. Потратил так много времени на обдумывание названия вопроса, что упустил из виду мелочи.

Ответ №1:

Вы можете использовать Array.find для поиска первого объекта в массиве, который соответствует условию, которое в нашем случае заключается в том, равно ли id свойство 103 :

 let tblUsers = [
    { id: 101, user: 'user1', password: 'password1', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Active', firstName: 'Bob', lastName: 'Marley' }, 
    { id: 102, user: 'user2', password: 'password2', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Inactive', firstName: 'Bill', lastName: 'Murray' }, 
    { id: 103, user: 'user3', password: 'password3', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Active', firstName: 'Jeniffer', lastName: 'Connelly' }, 
];


const user3 = tblUsers.find(user => user.id == 103)

user3.status = 'Inactive';

console.log(tblUsers) 

Комментарии:

1. Такая чистая. Спасибо, Призрак. Вы ответили первым.

2. @suchislife Нет проблем. Вы должны принять ответ, который поможет вам больше всего.

3. Ага. Вы ответили так быстро, что таймер все еще работает. осталось 2 минуты.

Ответ №2:

 let tblUsers = [
    { id: 101, user: 'user1', password: 'password1', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Active', firstName: 'Bob', lastName: 'Marley' }, 
    { id: 102, user: 'user2', password: 'password2', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Inactive', firstName: 'Bill', lastName: 'Murray' }, 
    { id: 103, user: 'user3', password: 'password3', created: '2021-01-01 23:59:59', modified: '2021-01-01 23:59:59', status: 'Active', firstName: 'Jeniffer', lastName: 'Connelly' }, 
];

const objectToChange = tblUsers.find((obj) => obj.id === 102);
objectToChange.user = 'user111';

console.log(tblUsers);