Je commence tout juste avec Javascript et j'utilise la bibliothèque Underscore. Je vois qu'ils ont toutes sortes de fonctions utilitaires, comme _.contains. Existe-t-il un moyen de faire fonctionner cela sur des objets?
var indexes = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'}, {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ];
if (_.contains(indexes, {'id':1, 'name': 'jake'})) {
console.log("contains");
}
La plupart des exemples qu'ils montrent contiennent des tableaux simples contenant des chaînes ou des nombres. Je me demandais ce que je pouvais faire pour utiliser leurs fonctions utilitaires comme _.contains pour les objets. Merci.
contains
nécessite que les valeurs soient comparables à ===
qui ne fonctionnera pas avec différentes instances d'objets.
Par exemple, cela fonctionnerait si vous passiez l'objet exact que vous recherchez, ce qui n'est pas très utile.
if (_.contains(indexes, indexes[0])) {
Vous pouvez cependant utiliser where
ou findWhere
.
if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {
findWhere
est nouveau dans Underscore 1.4.4
donc si vous ne l'avez pas, vous pouvez utiliser where
.
if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
Vous voudriez en fait utiliser _. Où pour cela.
var indexes = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'}, {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ];
if (_.where(indexes, {'id':1, 'name': 'jake'}).length) {
console.log("contains");
}