1

我有一个查询,我需要匹配任何多个值。_.where 方法非常接近:

这是 _where 文档:

where_.where(list, properties) 查看列表中的每个值,返回包含属性中列出的所有键值对的所有值的数组。

 _.where(listOfPlays, {author: "Shakespeare", year: 1611});
 => [{title: "Cymbeline", author: "Shakespeare", year: 1611},
     {title: "The Tempest", author: "Shakespeare", year: 1611}]

我需要一个 .whereAny 方法:

_.whereAny(listOfMovies, {director: "Tarantino", director: "Scorcese"});
=>[{title: "Pulp Fiction", director: "Tarantino", year:1996},{title:"Taxi", director: "Scorcese", year:1983}]

它将返回与任何提供的键值对匹配的对象数组。我错过了这种方法,还是有一种简单的方法可以做到?

非常感谢!

更详细的解释 - 我正在尝试使用三个复选框过滤大量对象。原始数据集中的每个项目都有一个对应于这三个值之一的属性。如果您选择复选框 1(值:红色),我将获得原始数据集的子集,其中仅包含键值 = 红色的项目。如果您还选择了复选框 2(值:橙色),那么我将需要查询这两个值,依此类推。

4

1 回答 1

3

您可以使用http://underscorejs.org/#filter这样:

_.filter(listOfMovies, function(movie) { return movie.director == 'Tarantino' || movie.director == 'Scorcese'; }); 
于 2013-04-04T19:50:07.493 回答