yaNastia
@yaNastia

Как сделать с двух коллекций данных одну с нужными свойствами?

У меня есть две колекции данных, мне нужно достать с первой колекции два свойства со значениями и с другой колекции два свойства со значениями и сделать из них одну колекцию с 4 свойствами которые будут сооетвествовать значениям, у обеих колекциях есть одинаковое поле id, которое не нужно в новой колекции, но по которому можна сравнивать, подскажите пожалуйста как решить задачу?

const collection1 = [
{id: test1, value: "value1"  status: "status1"}, 
{id: test1, value: "value11"  status: "status11"}, 
{id: test2, value: "value2"  status: "status2"}, 
{id: test2, value: "value22"  status: "status22"}, 
{id: test3, value: "value3"  status: "status3"}, 
{id: test3, value: "value33"  status: "status33"}
]
const collection2 = [
{id: test1, text: "text for value 1"  secondaryText: " secondary text for value 1"}, 
{id: test2, text: "text for value 2"  secondaryText: " secondary text for value 2"}, 
{id: test3, text: "text for value 3"  secondaryText: " secondary text for value 3"}
]


Вот такая колекция должна получиться:

const collection3 = [
{value: "value1", status: "status1", text: "text for value 1"  secondaryText: " secondary text for value 1"}, 
{value: "value11",  status: "status11", text: "text for value 1",  secondaryText: " secondary text for value 1"}, 
{value: "value2",  status: "status2", text: "text for value 2",  secondaryText: " secondary text for value 2" }, 
{value: "value22",  status: "status22", text: "text for value 2",  secondaryText: " secondary text for value 2"}, 
{value: "value3",  status: "status3", text: "text for value 3",  secondaryText: " secondary text for value 3"}, 
{value:"value33",  status: "status33", text: "text for value 3"  secondaryText: " secondary text for value 3"}
]
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const obj2 = Object.fromEntries(arr2.map(({ id, ...n }) => [ id, n ]));
const newArr1 = arr1.map(({ id, ...n }) => ({ ...n, ...obj2[id] }));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vearodev
Сыровато, но работает, додумаете

const collection3 = []

collection1.forEach((item, i) => {
  const found_prop = collection2.find(p => p.id === item.id)
  collection3.push(Object.assign(item, found_prop))
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы