3 回答
TA贡献1809条经验 获得超8个赞
.reduce您可以通过使用[1] 构建一系列不同的产品来执行以下操作。
const mapState = (state) => ({
brands: state
.products
.reduce((brands, product) => {
if (!brands.includes(product.brands)) {
return brands.concat([product.brands]);
}
return brands;
}, [])
})
});
export default connect(mapState)(Brands);
如果您需要在应用程序中重用此函数,则可以将检索不同品牌的功能提取到函数中:
function getProductBrands(products) {
return products
.reduce((brands, product) => {
if (!brands.includes(product.brands)) {
return brands.concat([product.brands]);
}
return brands;
}, []);
}
参考文献:[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
TA贡献2065条经验 获得超13个赞
forEach不返回任何内容。您可以做的是创建一个函数getAllProductBrands并调用该函数。然后,此函数应返回所有品牌的列表。
const getAllProductBrands = (products) => {
const brands = [];
products.forEach(product => {
if(!brands.some(brand => brand === product.brand) {
brands = [...brands, product.brand];
};
});
};
然后你可以在你的mapState中调用这个函数。
const mapState = (state) => ({
brands: getAllProductBrands(state.products)
});
TA贡献1830条经验 获得超3个赞
获取唯一的品牌列表
const mapState = ({products}) => {
const brands = [...new Set( products
.map(product => product.brands))];
return { brands }
};
添加回答
举报