JS Слияние двух массивом в один по id?
Привет всем есть два таких массива объектов
const array1 = [
{ "id": 1, "name": "12 годин", "price": "", "checked": false },
{ "id": 2, "name": "24 годин", "price": "", "checked": false },
{ "id": 3, "name": "48 годин", "price": "", "checked": false },
{ "id": 4, "name": "Без видалення", "price": "", "checked": false }, { "id": 5, "name": "Репост", "price": "", "checked": false } ]
И вот второй массив
const array2 = [
{ "id": 1, "name": "12 годин", "price": 100 },
{ "id": 2, "name": "24 годин", "price": 400 }
]
Мне надо как то объединить (слить) их в один массив объектов если id = id, причем если есть поле price, то "checked": true. Подскажите пожалуйста как это сделать (
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Мне надо как то объединить (слить) их в один массив объектов если id = id, причем если есть поле price, то "checked": true.
Предложу такой вариант
const array1 = [{
"id": 1,
"name": "12 годин",
"price": "",
"checked": false
},
{
"id": 2,
"name": "24 годин",
"price": "",
"checked": false
},
{
"id": 3,
"name": "48 годин",
"price": "",
"checked": false
},
{
"id": 4,
"name": "Без видалення",
"price": "",
"checked": false
}, {
"id": 5,
"name": "Репост",
"price": "",
"checked": false
}
]
const array2 = [{
"id": 1,
"name": "12 годин",
"price": 100
},
{
"id": 2,
"name": "24 годин",
"price": 400
}
]
array2.forEach(o2 => {
const i = array1.findIndex(o1 => o1.id === o2.id)
if (i === -1) return
array1[i].price = o2.price
array1[i].checked = !!o2.price
})
console.log(array1)