Javascript 对象数组-选择值数组中Obj.Prop所在数组的子集

Javascript 对象数组-选择值数组中Obj.Prop所在数组的子集,javascript,Javascript,我有一个对象数组。例如,假设这些对象有一个id和一个名称: var myObjectArray = [{id:1, name:'objOne'}, {id:2, name:'objTwo'}]; 我想选择这个数组的一个子集,只包含对象id位于可接受id数组中的对象。所以像这样: var subsetArray = _.where(myObjectArray , {id:1}); 除了obj.id=1条件之外,我想说对象id在[3,4,5] 有没有干净的方法可以做到这一点?(任何类似于loda

我有一个对象数组。例如,假设这些对象有一个id和一个名称:

var myObjectArray = [{id:1, name:'objOne'}, {id:2, name:'objTwo'}];
我想选择这个数组的一个子集,只包含对象id位于可接受id数组中的对象。所以像这样:

var subsetArray = _.where(myObjectArray , {id:1});
除了
obj.id=1
条件之外,我想说对象id在
[3,4,5]


有没有干净的方法可以做到这一点?(任何类似于lodash、下划线或原始javascript工作的内容)。还是我忘记了下划线/lodash/等,只是迭代每个元素

您可以在vanilla JS中使用和执行此操作

filter
接受回调,该回调将与数组中的每个项一起调用。如果回调返回true,则包含该项,否则不包含该项

indexOf
接受一个值并查找数组中该值的从零开始的索引(如果该值存在于数组中),或者
-1
(如果不存在)

~
是一个逐位运算符,它将
-1
转换为
0
(除其他功能外),使
-1
成为一个错误值,用于我们的过滤器回调

在上面的示例中,过滤器接受一个箭头函数形式的回调。
=>
左侧是
o
,它是每次迭代时数组中的值。
=>
右侧是一个表达式。箭头允许隐式返回表达式值。对于单值箭头函数,参数也是可选的

一个更详细的等价物是:

var results = myObjectArray.filter(function(o){
  return [3,4,5].indexOf(o.id) !== -1;
});

你太棒了,works:会回来接受的。另外,我真的很感谢解释本身——老实说,当我看到没有细节的解决方案时,我不理解。请注意,如果你需要支持IE、Safari或不支持箭头功能的Firefox和Chrome的旧版本,您可以使用稍微详细一点的函数表达式语法:
var results=myObjectArray.filter(函数(o){return~[3,4,5].indexOf(o.id);})
@Joseph-你能评论一下你用于过滤器的语法吗。具体地说,除了我一直在看的ES6介绍外,我从未见过JS lambda。谢谢你的详细解释。这是一个极好的答案!
var results = myObjectArray.filter(function(o){
  return [3,4,5].indexOf(o.id) !== -1;
});