Найди и добавить объект
[
{
"id": 1,
"name": "Алексей",
"base": [
{
"user_class": 1,
"type": 1,
},
{
"user_class": 1,
"type": 4,
},
]
},
{
"id": 2,
"name": "Сергей",
"base": []
}
]
Как с помощью JavaScript найти по id == 2 пользователя Сергей и добавить к нему в base объект
Ответы (2 шт):
Автор решения: vsemozhebuty
→ Ссылка
Например, так:
const users = [
{
"id": 1,
"name": "Алексей",
"base": [
{
"user_class": 1,
"type": 1,
},
{
"user_class": 1,
"type": 4,
},
]
},
{
"id": 2,
"name": "Сергей",
"base": []
}
];
const foundUser = users.find(user => user.id === 2);
foundUser.base.push({});
console.log(users);
Автор решения: Ajeet Shah
→ Ссылка
Если вы не хотите изменять исходные данные:
Создайте копию, find и push:
const data = [{
"id": 1,
"name": "Алексей",
"base": [
{"user_class": 1,"type": 1,},
{"user_class": 1,"type": 4,},
]
},
{
"id": 2,
"name": "Сергей",
"base": []
}
]
function findAndAdd(data, id, obj) {
const copy = data.map(d => {
return { ...d,
base: [...d.base]
}
})
const index = copy.findIndex(d => d.id === id)
if (index > -1) {
copy[index].base.push(obj)
}
return copy
}
console.log('before', data)
console.log('new', findAndAdd(data, 2, {
"user_class": 10,
"type": 10,
}))
console.log('after', data)