i lodash Map函数循环列表,我尝试删除最后一个孩子的图像。但是我找不到解决方案。
const menus =[
{
name: 'Home',
key:'dashboard'
},
{
name:'change your pin',
key:'resetpin'
},
{
name:'Contact',
key:'contact'
},
{
name:'Sign Out',
key:'signout'
}
]
const menuList = map(menus, (el, i) => {
return <Main>
<Row>
<Text />
<Image />
</Row>
</Main>
})
我不希望最后一个循环上的图像
实际上只需要删除最后一个孩子的图像。因此,我通过此代码实现了。
const menuLength = menus.length;
const menuList = map(menus, (el, i) => {
if (menuLength === i + 1) {
return <Main>
<Row>
<Text />
</Row>
</Main>
}else {
return <Main>
<Row>
<Text />
<Image />
</Row>
</Main>
})
map()
接收2个params value
和 index
,因此您可以检查数组索引是否是地图功能中的最后一个,类似于arr.map((item, index) => index === arr.length-1 && arr.splice(index, 1))
但是,如果您只想删除最后一项,则可以执行此类 arr.splice(-1,1)
希望它有帮助
_.dropRight(array, [n=1])
来自lodash创建了一个数组,n元素从末端掉落。因此,在您的情况下,这仅是_.dropRight(menus)
。您也可以在map
功能中执行此操作:
const menuList = map(_.dropRight(menus), (el, i) => {
return <Main>
<Row>
<Text />
<Image />
</Row>
</Main>
})
为什么不只是切片呢?map(menus.slice(0, -1), (el, i) => ...
)