Я застрял, показывая страницу корзины, где перечислены продукты, которые были добавлены в корзину пользователями. У меня есть два массива: один с деталями продукта.
productDetails: [
{
productID: 1,
productTitle: 'Product Title 1',
productPrice: 2000
},
{
productID: 2,
productTitle: 'Product Title 2',
productPrice: 5000
},
{
productID: 3,
productTitle: 'Product Title 3',
productPrice: 1000
},
{
productID: 4,
productTitle: 'Product Title 4',
productPrice: 10000
}
],
Другой - с информацией о товаре, в которой указан идентификатор продукта и количество, выбранное только пользователями.
cartProducts: [
{
productID: 1,
quantity: 5,
},
{
productID: 3,
quantity: 2,
}
]
Я отфильтровал все продукты, которые выбрал пользователь.
cartItemDetails() {
return this.productDetails.filter(
el => this.cartProducts.some(f => f.id === el.productID),
);
},
Эта функция выдает подробности продукта productID 1 и 3. Мне нужен новый массив, который добавляет количественный атрибут массива cartProducts в массив productDetails.
newArray: [
{
productID: 1,
productTitle: 'Product Title 1',
productPrice: 2000,
quantity:5
},
{
productID: 3,
productTitle: 'Product Title 3',
productPrice: 1000,
quantity:5
}
]
Я надеюсь, что разъяснил свои вопросы. Я также пытаюсь решить эту проблему с помощью метода javascript карты, но он не работает.
С Уважением,
источник
Используйте карту и разброс объектов, чтобы объединить два массива:
источник
Преобразовать
productDetails
к карте (productDetailsMap
), используя вproductID
качестве ключа.Итерируйте
cartProducts
с,Array.map()
чтобы получить текущий продукт отproductDetailsMap
негоproductID
, и объединитесь, распространяясь в новый объект.источник
Вы можете попробовать что-то похожее на это:
Надеюсь это поможет :)
источник
Вы можете использовать
Object.assign()
метод для копирования пар свойство-значение из productDetails в cartProducts при совпадении идентификатора продукта:источник
Вы можете сделать несколько нулевых проверок, если требуется.
источник
Вот что портит ваш код здесь:
f
у которогоcartProducts
предмет не имеет свойстваid
.Я думаю, что вы имели в виду
f.productID
вместо этого.Теперь вот способ добавить
quantity
свойство с помощьюmap
функции:источник