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條經驗 獲得超14個贊
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 }
};
添加回答
舉報