Estou parado mostrando a página do carrinho onde estão listados os produtos que foram adicionados ao carrinho pelos usuários. Eu tenho duas matrizes: uma com os detalhes do produto.
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
}
],
Outro item do carrinho Detalhes do produto que possui ID do produto e quantidade selecionados apenas pelos usuários.
cartProducts: [
{
productID: 1,
quantity: 5,
},
{
productID: 3,
quantity: 2,
}
]
Eu filtrei todos os produtos que o usuário selecionou.
cartItemDetails() {
return this.productDetails.filter(
el => this.cartProducts.some(f => f.id === el.productID),
);
},
Esta função fornece os detalhes do produto dos productID 1 e 3. O que eu quero é uma nova matriz que adicione o atributo de quantidade da matriz cartProducts à matriz productDetails.
newArray: [
{
productID: 1,
productTitle: 'Product Title 1',
productPrice: 2000,
quantity:5
},
{
productID: 3,
productTitle: 'Product Title 3',
productPrice: 1000,
quantity:5
}
]
Espero ter esclarecido minhas perguntas. Também estou tentando resolver esse problema com o método javascript do mapa, mas não está funcionando.
Saudações,
fonte
Use mapa e objeto espalhado para combinar as duas matrizes:
fonte
Converta o
productDetails
em um mapa (productDetailsMap
), usando oproductID
como a chave.Iterar
cartProducts
comArray.map()
get o produto atualproductDetailsMap
por eleproductID
e mesclar, espalhando em um novo objeto.fonte
Você pode tentar algo semelhante a este:
Espero que isto ajude :)
fonte
Você pode usar o
Object.assign()
método para copiar pares de valores de propriedade de productDetails em cartProducts sempre que o productID corresponder:fonte
Você pode fazer algumas verificações nulas, se necessário.
fonte
É isso que está mexendo com seu código aqui:
f
que é umcartProducts
item não tem propriedadeid
.Acho que você quis dizer com isso
f.productID
.Agora, aqui está uma maneira de adicionar a
quantity
propriedade usando amap
função:fonte