我將使用這個例子http://codepen.io/lacker/pen/vXpAgj,因爲它與我目前的問題非常相似。所以,假設我們有這個數組:React array.map()
[
{category: 'Sporting Goods', price: '$49.99', stocked: true, name: 'Football'},
{category: 'Sporting Goods', price: '$9.99', stocked: true, name: 'Baseball'},
{category: 'Sporting Goods', price: '$29.99', stocked: false, name: 'Basketball'},
{category: 'Electronics', price: '$99.99', stocked: true, name: 'iPod Touch'},
{category: 'Electronics', price: '$399.99', stocked: false, name: 'iPhone 5'},
{category: 'Electronics', price: '$199.99', stocked: true, name: 'Nexus 7'}
]
如何使用array.map()重寫下面的代碼?
var rows = [];
var lastCategory = null;
this.props.products.forEach(function(product) {
if (product.category !== lastCategory) {
rows.push(<ProductCategoryRow category={product.category} key={product.category} />);
}
rows.push(<ProductRow product={product} key={product.name} />);
lastCategory = product.category;
});
下面的示例不能正確地完成這項工作。
const lastCategory = null;
const rows = this.props.products.map(function(product){
if (product.category !== lastCategory) {
return (<ProductCategoryRow category={product.category} key={product.category} />);
}
return (<ProductRow product={product} key={product.name} />);
lastCategory = product.category;
});
歡呼和感謝,
由於上面的返回結果,你永遠不會到達'lastCategory = product.category'行 – larz