Estoy atascado mostrando la página del carrito donde se enumeran los productos que los usuarios agregaron al carrito. Tengo dos matrices: una con los detalles del producto.
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
}
],
Otro con detalles del producto del carrito que tiene la identificación del producto y la cantidad seleccionada solo por los usuarios.
cartProducts: [
{
productID: 1,
quantity: 5,
},
{
productID: 3,
quantity: 2,
}
]
He filtrado todos los productos que el usuario ha seleccionado.
cartItemDetails() {
return this.productDetails.filter(
el => this.cartProducts.some(f => f.id === el.productID),
);
},
Esta función proporciona los detalles del producto de productID 1 y 3. Lo que quiero es una nueva matriz que agregue el atributo de cantidad de cartProducts array a productDetails.
newArray: [
{
productID: 1,
productTitle: 'Product Title 1',
productPrice: 2000,
quantity:5
},
{
productID: 3,
productTitle: 'Product Title 3',
productPrice: 1000,
quantity:5
}
]
Espero haber aclarado mis preguntas. También estoy tratando de resolver este problema con el método map javascript pero no funciona.
Saludos,
fuente
Use el mapa y la dispersión de objetos para combinar las dos matrices:
fuente
Convierta el
productDetails
en un Mapa (productDetailsMap
), utilizando elproductID
como la clave.Itere el archivo
cartProducts
con el queArray.map()
obtiene el producto actualproductDetailsMap
por élproductID
, y fusione esparciéndolo en un nuevo objeto.fuente
Puedes probar algo similar a esto:
Espero que esto ayude :)
fuente
Puede usar el
Object.assign()
método para copiar pares de propiedad-valor de productDetails en cartProducts siempre que el productID coincida:fuente
Podría hacer algunas comprobaciones nulas si es necesario.
fuente
Esto es lo que está jugando con su código aquí:
f
que es uncartProducts
artículo no tiene propiedadid
.Creo que lo que quisiste decir es
f.productID
lugar.Ahora aquí hay una manera de agregar la
quantity
propiedad usando lamap
función:fuente