3 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
.reduce您可以通過使用[1] 構(gòu)建一系列不同的產(chǎn)品來執(zhí)行以下操作。
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);
如果您需要在應(yīng)用程序中重用此函數(shù),則可以將檢索不同品牌的功能提取到函數(shù)中:
function getProductBrands(products) {
return products
.reduce((brands, product) => {
if (!brands.includes(product.brands)) {
return brands.concat([product.brands]);
}
return brands;
}, []);
}
參考文獻(xiàn):[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
forEach不返回任何內(nèi)容。您可以做的是創(chuàng)建一個(gè)函數(shù)getAllProductBrands并調(diào)用該函數(shù)。然后,此函數(shù)應(yīng)返回所有品牌的列表。
const getAllProductBrands = (products) => {
const brands = [];
products.forEach(product => {
if(!brands.some(brand => brand === product.brand) {
brands = [...brands, product.brand];
};
});
};
然后你可以在你的mapState中調(diào)用這個(gè)函數(shù)。
const mapState = (state) => ({
brands: getAllProductBrands(state.products)
});

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
獲取唯一的品牌列表
const mapState = ({products}) => {
const brands = [...new Set( products
.map(product => product.brands))];
return { brands }
};
添加回答
舉報(bào)