遍历数组的每一项里面的某一项属性且是数组的过滤出想得到的数据

145 阅读1分钟

遍历数组的每一项里面的某一项属性且是数组的过滤出想得到的数据

    {
        id: 1,
        name: '麦迪',
        skill: [
            {
                uid: 1,
                title: '干拔',
                isChecked: true
            },
            {
                uid: 2,
                title: '突破',
                isChecked: true
            },
            {
                uid: 3,
                title: '变向',
                isChecked: false
            }
        ]
    },
    {
        id: 2,
        name: '科比',
        skill: [
            {
                uid: 1,
                title: '急停跳投',
                isChecked: true
            },
            {
                uid: 2,
                title: '扣篮',
                isChecked: true
            },
            {
                uid: 3,
                title: '突破',
                isChecked: false
            }
        ]
    }
]

现在有个需求: 过滤掉数组每一项数据的skill属性里的isChecked为false 重新得到一个新数组,代码如下:

let result = []

arr.forEach((item,index) => {
    let flag = []
    item.skill.forEach((_item,_index) => {
        if(_item.isChecked) {
            flag.push({
                ..._item
            })
        }
        if(flag.length) {
            // 遍历到最后一项才向result数组push
            if(_index + 1 == item.skill.length) {
                result.push({
                    ...item,
                    skill: flag
                })
            }
        }
    })
})