【问题标题】:Lodash filter Array of Objects using multiple properties [closed]Lodash过滤器使用多个属性的对象数组[关闭]
【发布时间】:2020-08-22 01:33:09
【问题描述】:

如何过滤多个条件的数组?

var users = [
  { user: "barney", age: 36, active: true },
  { user: "fred", age: 39, active: false },
  { user: "fred", age: 40, active: false },
  { user: "fred", age: 41, active: false },
  { user: "fred", age: 42, active: false },
  { user: "fred", age: 43, active: false },
]
_.filter(users, function (o) {
  return o.age !== 40 || o.age !== 41 || o.age !== 42
})
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>

【问题讨论】:

  • 您可能想要&&,而不是||,因为您的条件对于o.age 的所有数值都为真

标签: javascript arrays filtering lodash


【解决方案1】:

你的谓词函数有一个小问题

o.age !== 40 || o.age !== 41 || o.age !== 42

传递每个对象,因为年龄只有一个值,所以检查它是否不同于3个不同的值肯定是正确的

以下修复可以帮助您

var users = [
  { user: "barney", age: 36, active: true },
  { user: "fred", age: 39, active: false },
  { user: "fred", age: 40, active: false },
  { user: "fred", age: 41, active: false },
  { user: "fred", age: 42, active: false },
  { user: "fred", age: 43, active: false },
]

const res = _.filter(users, function (o) {
  return ![40, 41, 42].includes(o.age)
})

console.log(res)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 2020-04-27
    • 2018-08-22
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多