Сделать из двух массивов один javascript
Есть два массива:
order = [
{id:1, product_id=100},
{id:2, product_id=200},
];
product = [
{id:100, key: xxxxxx},
{id:200, key: yyyyyy},
]
Как из них сделать один вида:
order = [
{id:1, product_id=100, key: xxxxxx},
{id:2, product_id=200, key: yyyyyy},
];
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Нужно создать словарик product-ов, чтобы лишний раз не бегать по массиву, а потом заполнить данными позиции заказа.
const order = [
{id: 1, product_id: 100},
{id: 2, product_id: 200},
];
const product = [
{id: 100, key: 'xxxxxx'},
{id: 200, key: 'yyyyyy'},
];
const productDict = product.reduce((acc, x) => {
const { id, ...rest } = x;
acc[id] = rest;
return acc;
}, {});
const fillOrder = order.map((x) =>
Object.assign({}, x, productDict[x.product_id]));
console.log(fillOrder);
Мой опыт подсказывает, что удобнее будет работать с конструкцией вида
{id: 1, product_id: 100, Product: {id: 100, key: 'xxxxxx'}}
вместо {id: 1, product_id: 100, key: 'xxxxxx'}.