La première fois que je travaille avec jQuery.inArray()
et ça fait un peu bizarre.
Si l'objet est dans le tableau, il retournera 0, mais 0 est faux en Javascript. Donc, ce qui suit affichera: "n'est PAS dans le tableau"
var myarray = [];
myarray.push("test");
if(jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
Je vais devoir changer la déclaration if en:
if(jQuery.inArray("test", myarray)==0)
Mais cela rend le code illisible. Surtout pour quelqu'un qui ne connaît pas cette fonction. Ils s'attendront à ce que jQuery.inArray ("test", myarray) donne la valeur true lorsque "test" est dans le tableau.
Alors ma question est, pourquoi est-ce fait de cette façon? Je n'aime vraiment pas ça. Mais il doit y avoir une bonne raison de le faire comme ça.
la source
if jQuery.inArray('test', myarray) isn't -1
$.isInArray = function(test,array) { return $.inArray(test, array) !== -1; };
$.isInArray = function(item, array) { return !!~$.inArray(item, array); };
(je garderais du code crypté comme ça dans une fonction bien nommée pour garder l'intention claire cependant :))if( $.inArray(test, array) > -1) { // do stuff }
$.inArray
renvoie l' index de l'élément s'il est trouvé ou -1 s'il ne l'est pas - pas une valeur booléenne. Donc, le bon estla source
La réponse vient du premier paragraphe de la vérification de la documentation si les résultats sont supérieurs à -1, pas si c'est vrai ou faux.
la source
La bonne façon d'utiliser
inArray(x, arr)
n'est pas du tout de l'utiliser , et d'utiliser à la placearr.indexOf(x)
.Le nom standard officiel est également plus clair sur le fait que la valeur retournée est un index, donc si l'élément passé est le premier, vous obtiendrez un
0
(c'est-à-dire une fausse en Javascript).(Notez que cela
arr.indexOf(x)
n'est pas pris en charge dans Internet Explorer jusqu'à IE9 , donc si vous devez prendre en charge IE8 et versions antérieures, cela ne fonctionnera pas et la fonction jQuery est une meilleure alternative.)la source
$.inArray
utilisé au début du code, je dois corriger un bug, je gémis. Quoi qu'il en soit, cela devrait être la réponse acceptée.Ou si vous voulez obtenir un peu de fantaisie, vous pouvez utiliser les opérateurs pas au bit (~) et non logique (!) Pour convertir le résultat de la fonction inArray en valeur booléenne.
la source
J'utilise habituellement
ou
la source
if( $.inArray("test", myarray) > -1 )
La méthode jQuery inArray () est utilisée pour rechercher une valeur dans un tableau et renvoyer son index et non une valeur booléenne. Et si la valeur n'a pas été trouvée, elle renverra -1.
Donc, pour vérifier si une valeur est présente dans un tableau, suivez la pratique ci-dessous:
Référence
la source
La
inArray
fonction renvoie l'index de l'objet fourni comme premier argument à la fonction dans le tableau fourni comme deuxième argument à la fonction.Lorsque
inArray
renvoie,0
cela indique que le premier argument a été trouvé à la première position du tableau fourni.Pour utiliser
inArray
dans une instruction if, utilisez:inArray
retourne-1
lorsque le premier argument passé à la fonction est introuvable dans le tableau passé comme deuxième argument.la source
au lieu d'utiliser,
jQuery.inArray()
vous pouvez également utiliser laincludes
méthode pour int array:consultez le post officiel ici
la source
jQuery.inArray () renvoie l'index de l'élément dans le tableau, ou -1 si l'élément n'est pas trouvé. En savoir plus ici: jQuery.inArray ()
la source
Il renverra l'index de l'élément dans le tableau. S'il n'est pas trouvé, vous obtiendrez
-1
la source
Si nous voulons vérifier qu'un élément est à l'intérieur d'un ensemble d'éléments, nous pouvons faire par exemple:
la source
Ceci est utile pour vérifier les variables dynamiques. Cette méthode est facile à lire.
la source
$.inArray()
effectue la MÊME CHOSE EXACT quemyarray.indexOf()
et renvoie l'index de l'élément dont vous vérifiez l'existence dans le tableau. Il est juste compatible avec les versions antérieures d'IE avant IE9. Le meilleur choix est probablement d'utilisermyarray.includes()
qui retourne une valeur booléenne vrai / faux. Voir l'extrait ci-dessous pour des exemples de sortie des trois méthodes.la source
$.inArray
devrait être le standard d'or si vous avez accès à la bibliothèque jQuery. Sinon, JavaScript.indexOf
avec un polyfill pour IE8 doit être utilisé à la place. Éloignez-vous de ces trucs modernes comme.includes()
.Mec, regarde le doc .
par exemple:
la source
Pour une raison quelconque, lorsque vous essayez de rechercher un élément DOM jquery, il ne fonctionnera pas correctement. Donc, réécrire la fonction ferait l'affaire:
la source
la source
Personne ne l'utilise
$
au lieu dejQuery
:la source
$
au lieu dejQuery
.le moyen le plus court et le plus simple est.
la source