J'ai ceci
var matches = bookmarks.filter(function(x) {
return _.contains(x.get("tags"), 'Apple');
});
Qui renverra les objets de signet qui ont les balises Apple
Je veux mettre un tableau à la place pour tirer et tous les signets qui ont les valeurs correspondantes, similaires à ceci
var matches = bookmarks.filter(function(x) {
return _.contains(x.get("tags"), ['Apple','orange']);
});
Cela ne fonctionne pas, aucun moyen de le faire fonctionner?
EDIT: Je suis désolé, les signets sont une collection et j'essaie de renvoyer les modèles qui ont le Apple et les balises orange
Si les balises sont une chaîne, votre code serait
return _.indexOf(x.get("tags"), ['Apple','orange']) > -1;
Exemple avec indexOf: jsFiddle
Si les balises sont un tableau, vous pouvez utiliser l'intersection
return _.intersection(['Apple','orange'], x.get("tags")).length > 0;
Exemple avec intersection: jsFiddle
Il ne semble pas y avoir de fonction pour cela dans le soulignement. Cependant, vous pouvez facilement combiner d'autres fonctions pour y parvenir:
_.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);
});
}
});