我有这个
var matches = bookmarks.filter(function(x) {
return _.contains(x.get("tags"), 'apple');
});
将返回带有apple标签的书签对象
我想在那里放一个数组来拉取所有具有匹配值的书签,类似于
var matches = bookmarks.filter(function(x) {
return _.contains(x.get("tags"), ['apple','orange']);
});
这不起作用,任何方式让它发挥作用?
编辑:对不起,书签是一个集合,我试图返回有苹果和橙色标签的模型答案 0 :(得分:26)
如果标签是字符串,那么您的代码就是
return _.indexOf(x.get("tags"), ['apple','orange']) > -1;
indexOf示例:jsFiddle
如果标签是数组,则可以使用交叉点
return _.intersection(['apple','orange'], x.get("tags")).length > 0;
交叉示例:jsFiddle
答案 1 :(得分:5)
在下划线中似乎没有相应的功能。但是,您可以轻松地组合其他功能来实现此目的:
_.mixin({
containsAny: function(arr, values) {
// at least one (.some) of the values should be in the array (.contains)
return _.some(values, function(value) {
return _.contains(arr, value);
});
}
});