Массив продуктов js
Есть два массива. Нужно создать новый массив из продуктов, айдишкини продуктов находятся в basket.
products: [
{
id: 11,
name: 'Опасная Бритва The Bluebeards Revenge «Claymore» Straight Razor 5/8',
price: '5778',
descriptions: 'Классическая бритва со сверх-острым лезвием из высококачественной стали и ручкой из африканского черного дерева. Обеспечивает безупречно гладкое и профессиональное бритье.Качественная классическая бритва The Bluebeards Revenge «CLAYMORE» Straight Razor 5/8 African Blackwood из углеродистой стали — это прекрасный инструмент для бритья. Идеально подходит для мужчин, которые любят классический стиль бритья.Изготовлена вручную с нанесением на лезвие аутентичной надписи, которая добавляет бритве стильный вид и уникальность. Современный дизайн бритвы не просто радует глаз, но и продуман до мельчайших деталей. Вес отлично сбалансирован, и таким образом бритва не производит излишнего давления на кожу, которое может спровоцировать раздражение и воспаление. Кожа владельца больше защищена от раздражения и мелких порезов. Подходит как для новичков, так и для опытных пользователей опасных бритв. Идеальный выбор настоящих мужчин.',
brand: 'Claymore',
img: 'https://barbercompany.com/image/cache/catalog/product/2016-08-timor-400-5-8-our-best--266x333.jpg'
},
{
id: 12,
name: 'Дорожный Набор Для Бритья Edwin Jagger Ejlt2M3',
price: '4188',
descriptions: 'Дорожный набор для бритья от Edwin Jagger.В наборе 1)футляр из натуральной черной кожи,2)бритва Mach 3 Turbo 3)помазок для путешествий из 100 % ворса барсука.Подлинная черная кожа с контрастными серыми швами делает чехол очень стильным. В чехле есть место для запасных лезвий.',
brand: 'Edwin Jagger',
img: 'https://barbercompany.com/image/cache/catalog/product/2016-04-giesen-forsthoff-timor-403-266x333.jpg'
},
{
id: 13,
name: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor',
price: '2988 ',
descriptions: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor Изготовлен вручную из прочного авиационного алюминия марки 7075. В комплекте станка пластина безопасной бритвы M1. Т-образный станок Calypso M1 от Above The Tie гарантирует качество, эффективность и надежность в процессе бритья и обеспечит лучший результат. Головка бритвы получила совершенную обработку, из-за чего легко скользит по коже лица без усилий и нажима, а пластина M1 с симметричными отверстиями для лезвия подходит для наиболее агрессивного бритья.Удобная конструкция станка из прочного алюминия проста в эксплуатации и позволяет быстро и легко заменить лезвие. Эргономичная ручка помогает удобно держать станок в руке благодаря ребристой поверхности. Бритье в удовольствие без порезов — главная характеристика Calypso M1.Ручка станка также подходит для бритвы таких брендов: Weber, Tradede OC, Goodfella, Edwin Jagger, Muhle, Gillette с головками старого и современного типов. Вес — 40 г (бритва — 13 г, ручка — 27 г).',
brand: 'Calypso',
img: 'https://barbercompany.com/image/cache/catalog/King%20of%20Shave/opasnaya-britva-king-of-shave-black-9-266x333.jpg'
},
{
id: 14,
name: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor',
price: '2988 ',
descriptions: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor Изготовлен вручную из прочного авиационного алюминия марки 7075. В комплекте станка пластина безопасной бритвы M1. Т-образный станок Calypso M1 от Above The Tie гарантирует качество, эффективность и надежность в процессе бритья и обеспечит лучший результат. Головка бритвы получила совершенную обработку, из-за чего легко скользит по коже лица без усилий и нажима, а пластина M1 с симметричными отверстиями для лезвия подходит для наиболее агрессивного бритья.Удобная конструкция станка из прочного алюминия проста в эксплуатации и позволяет быстро и легко заменить лезвие. Эргономичная ручка помогает удобно держать станок в руке благодаря ребристой поверхности. Бритье в удовольствие без порезов — главная характеристика Calypso M1.Ручка станка также подходит для бритвы таких брендов: Weber, Tradede OC, Goodfella, Edwin Jagger, Muhle, Gillette с головками старого и современного типов. Вес — 40 г (бритва — 13 г, ручка — 27 г).',
brand: 'Calypso',
img: 'https://barbercompany.com/image/cache/catalog/King%20of%20Shave/opasnaya-britva-king-of-shave-black-9-266x333.jpg'
},
{
id: 15,
name: 'Дорожный Набор Для Бритья Edwin Jagger Ejlt2M3',
price: '4188',
descriptions: 'Дорожный набор для бритья от Edwin Jagger.В наборе 1)футляр из натуральной черной кожи,2)бритва Mach 3 Turbo 3)помазок для путешествий из 100 % ворса барсука.Подлинная черная кожа с контрастными серыми швами делает чехол очень стильным. В чехле есть место для запасных лезвий.',
brand: 'Edwin Jagger',
img: 'https://barbercompany.com/image/cache/catalog/product/2016-04-giesen-forsthoff-timor-403-266x333.jpg'
}
]
basket: [
{
id: 12,
count: 1
},
{
id: 13,
count: 1
}
]
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
И что мешает вам решить задачу в лоб:
пройтись по массиву
basket-basket_elementпройтись по массиву
products-products_elementи записать в новый массив теproducts_elementу которыхproducts_element.id == basket_element.id
А если не в лоб, то можно в 1 строчку, но придется использовать find, map, filter
Автор решения: Aziz Umarov
→ Ссылка
Как-то так
let result = products.filter(item => backet.map(bac => bac.id).includes(item.id));
let products = [
{
id: 11,
name: 'Опасная Бритва The Bluebeards Revenge «Claymore» Straight Razor 5/8',
price: '5778',
descriptions: 'Классическая бритва со сверх-острым лезвием из высококачественной стали и ручкой из африканского черного дерева. Обеспечивает безупречно гладкое и профессиональное бритье.Качественная классическая бритва The Bluebeards Revenge «CLAYMORE» Straight Razor 5/8 African Blackwood из углеродистой стали — это прекрасный инструмент для бритья. Идеально подходит для мужчин, которые любят классический стиль бритья.Изготовлена вручную с нанесением на лезвие аутентичной надписи, которая добавляет бритве стильный вид и уникальность. Современный дизайн бритвы не просто радует глаз, но и продуман до мельчайших деталей. Вес отлично сбалансирован, и таким образом бритва не производит излишнего давления на кожу, которое может спровоцировать раздражение и воспаление. Кожа владельца больше защищена от раздражения и мелких порезов. Подходит как для новичков, так и для опытных пользователей опасных бритв. Идеальный выбор настоящих мужчин.',
brand: 'Claymore',
img: 'https://barbercompany.com/image/cache/catalog/product/2016-08-timor-400-5-8-our-best--266x333.jpg'
},
{
id: 12,
name: 'Дорожный Набор Для Бритья Edwin Jagger Ejlt2M3',
price: '4188',
descriptions: 'Дорожный набор для бритья от Edwin Jagger.В наборе 1)футляр из натуральной черной кожи,2)бритва Mach 3 Turbo 3)помазок для путешествий из 100 % ворса барсука.Подлинная черная кожа с контрастными серыми швами делает чехол очень стильным. В чехле есть место для запасных лезвий.',
brand: 'Edwin Jagger',
img: 'https://barbercompany.com/image/cache/catalog/product/2016-04-giesen-forsthoff-timor-403-266x333.jpg'
},
{
id: 13,
name: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor',
price: '2988 ',
descriptions: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor Изготовлен вручную из прочного авиационного алюминия марки 7075. В комплекте станка пластина безопасной бритвы M1. Т-образный станок Calypso M1 от Above The Tie гарантирует качество, эффективность и надежность в процессе бритья и обеспечит лучший результат. Головка бритвы получила совершенную обработку, из-за чего легко скользит по коже лица без усилий и нажима, а пластина M1 с симметричными отверстиями для лезвия подходит для наиболее агрессивного бритья.Удобная конструкция станка из прочного алюминия проста в эксплуатации и позволяет быстро и легко заменить лезвие. Эргономичная ручка помогает удобно держать станок в руке благодаря ребристой поверхности. Бритье в удовольствие без порезов — главная характеристика Calypso M1.Ручка станка также подходит для бритвы таких брендов: Weber, Tradede OC, Goodfella, Edwin Jagger, Muhle, Gillette с головками старого и современного типов. Вес — 40 г (бритва — 13 г, ручка — 27 г).',
brand: 'Calypso',
img: 'https://barbercompany.com/image/cache/catalog/King%20of%20Shave/opasnaya-britva-king-of-shave-black-9-266x333.jpg'
},
{
id: 14,
name: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor',
price: '2988 ',
descriptions: 'Станок для бритья Above The Tie Calypso M1 Aluminium Safety Razor Изготовлен вручную из прочного авиационного алюминия марки 7075. В комплекте станка пластина безопасной бритвы M1. Т-образный станок Calypso M1 от Above The Tie гарантирует качество, эффективность и надежность в процессе бритья и обеспечит лучший результат. Головка бритвы получила совершенную обработку, из-за чего легко скользит по коже лица без усилий и нажима, а пластина M1 с симметричными отверстиями для лезвия подходит для наиболее агрессивного бритья.Удобная конструкция станка из прочного алюминия проста в эксплуатации и позволяет быстро и легко заменить лезвие. Эргономичная ручка помогает удобно держать станок в руке благодаря ребристой поверхности. Бритье в удовольствие без порезов — главная характеристика Calypso M1.Ручка станка также подходит для бритвы таких брендов: Weber, Tradede OC, Goodfella, Edwin Jagger, Muhle, Gillette с головками старого и современного типов. Вес — 40 г (бритва — 13 г, ручка — 27 г).',
brand: 'Calypso',
img: 'https://barbercompany.com/image/cache/catalog/King%20of%20Shave/opasnaya-britva-king-of-shave-black-9-266x333.jpg'
},
{
id: 15,
name: 'Дорожный Набор Для Бритья Edwin Jagger Ejlt2M3',
price: '4188',
descriptions: 'Дорожный набор для бритья от Edwin Jagger.В наборе 1)футляр из натуральной черной кожи,2)бритва Mach 3 Turbo 3)помазок для путешествий из 100 % ворса барсука.Подлинная черная кожа с контрастными серыми швами делает чехол очень стильным. В чехле есть место для запасных лезвий.',
brand: 'Edwin Jagger',
img: 'https://barbercompany.com/image/cache/catalog/product/2016-04-giesen-forsthoff-timor-403-266x333.jpg'
}
];
let backet = [
{
id: 12,
count: 1
},
{
id: 13,
count: 1
}
];
let result = products.filter(item => backet.map(bac => bac.id).includes(item.id));
console.log(result);