Suj*_*tha 7 javascript arrays dictionary filter
我停留在显示购物车页面的位置,其中列出了由用户添加到购物车的产品。我有两个数组:一个包含产品详细信息。
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
}
],
Run Code Online (Sandbox Code Playgroud)
另一个带有购物车产品详细信息,其产品ID和数量仅由用户选择。
cartProducts: [
{
productID: 1,
quantity: 5,
},
{
productID: 3,
quantity: 2,
}
]
Run Code Online (Sandbox Code Playgroud)
我已经过滤掉用户选择的所有产品。
cartItemDetails() {
return this.productDetails.filter(
el => this.cartProducts.some(f => f.id === el.productID),
);
},
Run Code Online (Sandbox Code Playgroud)
此函数提供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
}
]
Run Code Online (Sandbox Code Playgroud)
我希望我已经阐明了我的问题。我也在尝试使用地图javascript方法解决此问题,但无法正常工作。
问候,
您可以在之后使用map()并向每个项目filter()添加属性。quantity
const 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 }];
const cartProducts = [{ productID: 1, quantity: 5 }, { productID: 3, quantity: 2 }];
function cartItemDetails() {
return productDetails
.filter(el => cartProducts.some(f => f.productID === el.productID))
.map(item => ({
...item,
"quantity": cartProducts.find(f => f.productID === item.productID).quantity
}));
}
console.log(cartItemDetails());Run Code Online (Sandbox Code Playgroud)
或者你可以使用reduce()。
const 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 }];
const cartProducts = [{ productID: 1, quantity: 5 }, { productID: 3, quantity: 2 }];
function cartItemDetails() {
return productDetails.reduce((acc, curr) => {
let item = cartProducts.find(f => f.productID === curr.productID);
if (item) {
acc.push({ ...curr,
"quantity": item.quantity
});
}
return acc;
}, []);
}
console.log(cartItemDetails());Run Code Online (Sandbox Code Playgroud)
您还可以map()在 上使用cartProducts。
const 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 }];
const cartProducts = [{ productID: 1, quantity: 5 }, { productID: 3, quantity: 2 }];
function cartItemDetails() {
return cartProducts.map(item => ({
...productDetails.find(f => f.productID === item.productID),
...item
}));
}
console.log(cartItemDetails());Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |