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

时间:2017-12-06 11:45:56

标签: javascript react-native lodash

我通过lodash map函数循环列表数组,并且我尝试删除最后一个子项上的Image。但我无法找到解决方案。

 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>
}) 

我不想要最后一个循环的图像

4 个答案:

答案 0 :(得分:0)

map()会收到2个参数valueindex,因此您可以检查数组索引是否是地图函数中的最后一个,如arr.map((item, index) => index === arr.length-1 && arr.splice(index, 1))

但如果您只想删除最后一项,则可以执行此类arr.splice(-1,1)

希望有所帮助

答案 1 :(得分:0)

来自lodash的

_.dropRight(array, [n=1])创建了一个数组切片,其中有n个元素从末尾删除。所以在你的情况下,它只是_.dropRight(menus)。您也可以在map函数中执行此操作:

const menuList = map(_.dropRight(menus), (el, i) => {
    return <Main>                     
        <Row>
            <Text />
            <Image />
        </Row>
    </Main>
}) 

答案 2 :(得分:0)

实际上只需删除最后一个孩子的图像。所以我通过这个代码实现了。

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>
}) 

答案 3 :(得分:0)

为什么不做片? -XX:+AlwaysPreTouch -Xmx27g -Xms27g