Utknąłem, pokazując stronę koszyka, na której są wymienione produkty dodane do koszyka przez użytkowników. Mam dwie tablice: jedna ze szczegółami produktu.
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
}
],
Kolejny z koszykiem Szczegóły produktu, który ma identyfikator produktu i ilość wybraną tylko przez użytkowników.
cartProducts: [
{
productID: 1,
quantity: 5,
},
{
productID: 3,
quantity: 2,
}
]
Przefiltrowałem wszystkie produkty wybrane przez użytkownika.
cartItemDetails() {
return this.productDetails.filter(
el => this.cartProducts.some(f => f.id === el.productID),
);
},
Ta funkcja podaje szczegóły produktu o ID produktu 1 i 3. To, czego chcę, to nowa tablica, która dodaje atrybut ilościowy do tablicy cartProducts do tablicy productDetails.
newArray: [
{
productID: 1,
productTitle: 'Product Title 1',
productPrice: 2000,
quantity:5
},
{
productID: 3,
productTitle: 'Product Title 3',
productPrice: 1000,
quantity:5
}
]
Mam nadzieję, że wyjaśniłem moje pytania. Próbuję również rozwiązać ten problem za pomocą metody javascript mapy, ale nie działa.
Pozdrowienia,
źródło
Użyj mapy i rozkładania obiektów, aby połączyć dwie tablice:
źródło
Przekonwertować
productDetails
z mapą (productDetailsMap
), za pomocąproductID
jako klucz.Iteracyjne
cartProducts
zeArray.map()
uzyskać bieżący produkt zproductDetailsMap
przez toproductID
i przez scalanie rozprzestrzeniania do nowego obiektu.źródło
Możesz spróbować czegoś podobnego do tego:
Mam nadzieję że to pomoże :)
źródło
Możesz użyć
Object.assign()
metody kopiowania par wartość-wartość z productDetails do cartProducts, ilekroć ID produktu pasuje:źródło
W razie potrzeby możesz wykonać kilka kontroli zerowych.
źródło
Oto, co w tym miejscu zadziera z twoim kodem:
f
który jestcartProducts
przedmiotem, nie ma właściwościid
.Myślę, że to, co miałeś na myśli, to
f.productID
zamiast tego.Oto sposób dodania
quantity
właściwości za pomocąmap
funkcji:źródło