如何在lodash地图对象中找到最后一个孩子



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 valueindex,因此您可以检查数组索引是否是地图功能中的最后一个,类似于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) => ...

最新更新