22

私はこれを持っています

var matches = bookmarks.filter(function(x) {
    return _.contains(x.get("tags"), 'apple');
});

リンゴタグを持つブックマークオブジェクトを返します

プルする代わりにそこに配列を配置し、これと同様に、一致する値を持つすべてのブックマークを配置したい

var matches = bookmarks.filter(function(x) {
    return _.contains(x.get("tags"), ['apple','orange']);
});

これは機能しません。機能させる方法はありますか?

編集: 申し訳ありませんが、ブックマークはコレクションであり、リンゴとオレンジのタグを持つモデルを返そうとしています

4

2 に答える 2

26

タグが文字列の場合、コードは次のようになります

return _.indexOf(x.get("tags"), ['apple','orange']) > -1;

indexOf の例: jsFiddle

タグが配列の場合、交差点を使用できます

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

交差のある例: jsFiddle

于 2013-01-08T18:33:51.653 に答える
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);
    });
  }
});
于 2013-01-08T18:34:04.937 に答える