如何根据数组中字段的值过滤掉数据?

现有一组数据:

data:[
                {
                    name:'阿宝哥',
                    age:'25',
                    sex:'男',
                    money:0,
                    income:0,
                    disburse:0
                },
                {
                    name:'蓉儿',
                    age:'25',
                    sex:'女',
                    money:0,
                    income:0,
                    disburse:20000
                }
            ]

需求:如果某条数据的money、income、disburse的值都是0,则过滤掉这条数据,上述数据过滤结果为:

[
                {
                    name:'蓉儿',
                    age:'25',
                    sex:'女',
                    money:0,
                    income:0,
                    disburse:20000
                }
            ]

有什么非常方便的公共方法处理该类需求?
已知数据中需要判断是否为0的字段名并不相同

阅读 2.7k
4 个回答
let paramsArr = ['money', 'income', 'disburse']
data.filter(item => !paramsArr.every(key => item[key] == 0))
const data = [
    {
        name: '阿宝哥',
        age: '25',
        sex: '男',
        money: 0,
        income: 0,
        disburse: 0
    },
    {
        name: '蓉儿',
        age: '25',
        sex: '女',
        money: 0,
        income: 0,
        disburse: 20000
    }
]
// 过滤
console.log(data.filter(el => {
    return el.money === 0 && el.income === 0 && el.disburse === 0
}))
function filterData (data,propName1,propName2,propName3){
  let arr= data.filter(item => !item[propName1]&&!item[propName2]&&!item[propName3])
  return arr
}
新手上路,请多包涵
const fun = (paramsArr, arr) => arr.filter(item => !paramsArr.every(key => item[key] == 0))
fun(['money', 'income', 'disburse'], data)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题