JS对象数组如何实现多属性查询?

比如下面的对象数组:

let arr = [
    { a: 'name', b: 123, c: 1111},
    { a: 'name2', b: 456, c: 1111},
    { a: 'name2', b: 789, c: 1111},
  ]

查询条件:(且查询条件可动态变化,可以是一个属性,也可以是多个或者全部属性)

let query = { a: 'name2', c: 1111 }

希望返回的值:

[
  { a: 'name2', b: 456, c: 1111},
  { a: 'name2', b: 789, c: 1111},
]

这个逻辑其实和数据库的条件查询挺像的
但用JS的话下面的代码应该如何写呢?

let result = arr.filter(i => {
    // 过滤条件
})
阅读 3.2k
2 个回答
let query = { a: 'name2', c: 1111 }
let result = arr.filter(item => {
    // 过滤条件
    for(let key in query){
        if(query.hasOwnProperty(key) && (item[key] !== query[key])){
            return false
        }
    }
    return true
})
let result = arr.filter(item => {
    for (let key in query) {
        if (query[key] !== item[key]) return 0
    }
    return item
})
推荐问题