Mic*_*ael 2 javascript arrays object ecmascript-6 reactjs
我在一个类中有这个状态对象:
state = {
ingredients: {
salad: 1,
bacon: 5,
cheese: 2,
meat: 2
}
}
Run Code Online (Sandbox Code Playgroud)
并希望将其转换为一个数组,该数组也获取值编号,如下所示:
const burger = (props) => {
const transformedIngredients = Object.keys(props.ingredients)
.map(igKey => {
return [...Array(props.ingredients[igKey])].map((_,i)=>{
return <BurgerIngredient key={igKey + i} type={igKey}/>
});
});
console.log(transformedIngredients)
return(
<div className={classes.Burger}>
<BurgerIngredient type="bread-top" />
<BurgerIngredient type="cheese" />
<BurgerIngredient type="meat" />
<BurgerIngredient type="bread-bottom" />
</div>
);
};
export default burger;
Run Code Online (Sandbox Code Playgroud)
我按照教程成功地做到了,老实说我不完全理解这里发生了什么。特别是这部分:
return [...Array(props.ingredients[igKey])].map((_,i)=>{
return <BurgerIngredient key={igKey + i} type={igKey}/>
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!谢谢!
igKeybacon例如,是成分的关键之一。现在在成分中查找
props.ingredients[igKey]
Run Code Online (Sandbox Code Playgroud)
5在这种情况下,这将导致金额。现在用于构建具有该长度的数组:
Array(5) // { length: 5 }
Run Code Online (Sandbox Code Playgroud)
现在该数组是一个稀疏数组,其中没有任何内容。为了能够用 迭代它map,它必须用未定义的值填充,因此稀疏数组被扩展到一个新数组中,这将它变成一个填充数组:
[...Array(5)] // { length: 5, 0: undefined, 1: undefined, 2: ... }
Run Code Online (Sandbox Code Playgroud)
现在,具有 5 个条目的空数组将映射到具有 5 个 Burger 成分的数组。
顺便说一句,更优雅的 IMO:
Array.from(
{ length: props.infredients[igKey] },
(_, i) => <BurgerIngredient key={igKey + i} type={igKey}/>
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |