javascript - 使用值数组过滤对象数组?

标签 javascript

给定以下对象数组:

var data = [
  {fruit: "apples", stock: false, season: true},
  {fruit: "peaches", stock: true, season: false},
  {fruit: "oranges", stock: false, season: false},
  {fruit: "pears", stock: false, season: true},
]

这两个数组:

var fruits = ["apples", "peaches"]
var inv = ["stock"]

如何从数据中过滤对象,以便保留对象:

  • 如果 fruits 数组中有一个 fruit;和
  • 它们有一个来自 inv 数组的属性,该属性设置为 true

因此,在上面的示例中,只有桃子能够生存:

  var result = [
    {fruit: "peaches", stock: true, season: false}
  ]

最佳答案

我认为你可以使用 some() 的过滤器和 includes() :

var data = [
  {fruit: "apples", stock: false, season: true},
  {fruit: "peaches", stock: true, season: false},
  {fruit: "oranges", stock: false, season: false},
  {fruit: "pears", stock: false, season: true},
]

var fruits = ["apples", "peaches"]
var inv = ["stock"]

let filtered = data.filter(item => 
    fruits.includes(item.fruit) && inv.some(i => item[i]))

console.log(filtered)

关于javascript - 使用值数组过滤对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410923/

相关文章:

javascript - AngularJS+Typescript - 指令内的 Controller

javascript - 在 javascript/d3 中具有力导向布局的 Beeswarm 图

javascript - 使用 SVG.js 的蜜蜂 SVG 动画

javascript - window.scroll 事件触发两次

javascript - Meteor - 如何仅在开发或生产中使用包

C# webbrowser - 触发右键单击

javascript - 处理复杂 Web 界面的 javascript 事件

javascript - 双击触发事件清除文本框

javascript - window.alert() 后无法编辑输入文本字段

javascript - 如何使用 Express/Node 以编程方式发送 404 响应?