Je suis bloqué en montrant la page du panier où les produits sont répertoriés et qui ont été ajoutés au panier par les utilisateurs. J'ai deux tableaux: un avec les détails du produit.
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
}
],
Un autre avec le panier Détails du produit dont le produit ID et la quantité sont sélectionnés par les utilisateurs uniquement.
cartProducts: [
{
productID: 1,
quantity: 5,
},
{
productID: 3,
quantity: 2,
}
]
J'ai filtré tous les produits que l'utilisateur a sélectionnés.
cartItemDetails() {
return this.productDetails.filter(
el => this.cartProducts.some(f => f.id === el.productID),
);
},
Cette fonction donne les détails du produit des ID produit 1 et 3. Ce que je veux, c'est un nouveau tableau qui ajoute l'attribut quantité du tableau cartProducts au tableau productDetails.
newArray: [
{
productID: 1,
productTitle: 'Product Title 1',
productPrice: 2000,
quantity:5
},
{
productID: 3,
productTitle: 'Product Title 3',
productPrice: 1000,
quantity:5
}
]
J'espère avoir clarifié mes questions. J'essaie également de résoudre ce problème avec la méthode javascript de la carte, mais cela ne fonctionne pas.
Cordialement,
la source
Utilisez la carte et la répartition des objets pour combiner les deux tableaux:
la source
Convertissez le
productDetails
en Map (productDetailsMap
), en utilisant leproductID
comme clé.Itérer le
cartProducts
avecArray.map()
obtenir le produit actuelproductDetailsMap
par luiproductID
et fusionner en le diffusant dans un nouvel objet.la source
Vous pouvez essayer quelque chose de similaire à ceci:
J'espère que cela t'aides :)
la source
Vous pouvez utiliser la
Object.assign()
méthode pour copier des paires propriété-valeur de productDetails dans cartProducts chaque fois que le productID correspond:la source
Vous pouvez faire des vérifications nulles si nécessaire.
la source
C'est ce qui dérange votre code ici:
f
qui est uncartProducts
élément n'a pas de propriétéid
.Je pense que ce que vous vouliez dire est
f.productID
plutôt.Voici maintenant un moyen d'ajouter la
quantity
propriété en utilisant lamap
fonction:la source