Javascript 使用下划线JS,如何查找一个数组是否包含另一个数组?

Javascript 使用下划线JS,如何查找一个数组是否包含另一个数组?,javascript,underscore.js,Javascript,Underscore.js,我有这个 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','orang

我有这个

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']);
});
这不管用,有办法让它发挥作用吗


编辑:对不起,书签是一个集合,我试图返回带有apple和orange标签的型号

如果标签是字符串,您的代码应该是

return _.indexOf(x.get("tags"), ['apple','orange']) > -1;
带有indexOf的示例:

如果标记是数组,则可以使用交叉点

return _.intersection(['apple','orange'], x.get("tags")).length > 0;

交叉点示例:

下划线中似乎没有用于该交叉点的函数。但是,您可以轻松地组合其他功能来完成此任务:

_.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);
    });
  }
});

无关的。。。为什么要混合下划线和本机数组处理方法<代码>数组.过滤器和
\包含
。你不应该使用
.filter
?@JosephSilber啊,我不知道
>(
),我还没有实际使用下划线,虽然标题对我来说毫无意义。请看一下编辑,我忘记了一些细节。对不起,您好,请看一下编辑,我忘了一些细节。抱歉。Yes tags是一个数组,我正在尝试返回具有该数组值的对象。我想您可以
返回交叉点(['apple','orange'],x.get(“tags”)。长度
无需测试
>0