401 votes

jQuery.inArray(), comment l'utiliser?

Première fois que je travaille avec jQuery.inArray() et il agit un peu étrange.

Si l'objet est dans le tableau, il sera de retour 0, mais 0 est faux dans le Javascript. Donc la suite sera de sortie: "n'est PAS dans la gamme"

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 si l'instruction pour:

if(jQuery.inArray("test", myarray)==0)

Mais cela rend le code illisible. Surtout pour quelqu'un qui ne connaissent pas cette fonction. Il s'attend à ce que jQuery.inArray("test", myarray) donne vrai quand le "test" est dans le tableau.

Donc ma question est, pourquoi est-il fait de cette façon? J'ai vraiment n'aime pas cette. Mais il doit y avoir une bonne raison de le faire comme ça.

854voto

Chips_100 Points 4011

inArray renvoie l'index de l'élément dans le tableau, pas un booléen indiquant si l'élément existe dans le tableau.

Donc, pour vérifier si un élément est dans le tableau, utilisez:

if(jQuery.inArray("test", myarray)!==-1)

en tant que inArray sera de retour -1, si l'élément n'a pas été trouvé.

64voto

Jon Points 194296

$.inArray retourne l' index de l'élément s'il est trouvé ou -1 si elle ne l'est pas, pas une valeur booléenne. Donc la bonne est

if(jQuery.inArray("test", myarray) != -1) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
} 

26voto

Patsy Issa Points 3874

Honnêtement, la réponse est dans le premier paragraphe de la documentation de vérifier si le résultat est supérieur à -1, pas si c'est vrai ou faux.

L' $.inArray() la méthode est semblable à du JavaScript natif .méthode indexOf() en ce qu'elle renvoie -1 si il ne trouve pas de correspondance. Si le premier élément dans le tableau correspond à la valeur, $.inArray() renvoie 0.

Parce que JavaScript traite de 0 vaguement égale à false (c'est à dire 0 == false, mais 0 !== faux), si nous sommes de vérifier la présence de la valeur à l'intérieur de tableau, nous avons besoin de vérifier si elle n'est pas égale (ou supérieure) -1.

12voto

Jason Points 144

Ou si vous voulez obtenir un peu de fantaisie, vous pouvez utiliser le not au niveau du bit (~) et non logique(!) les opérateurs de convertir le résultat de la inArray fonction à valeur booléenne.

if(!!~jQuery.inArray("test", myarray)) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
}

12voto

Kevin Bowersox Points 48223

L' inArray fonction retourne l'index de l'objet de la livraison comme premier argument de la fonction dans le tableau fourni en tant que deuxième argument de la fonction.

Lors de l' inArray retours 0 il indique que le premier argument a été trouvé à la première position de la matrice.

Pour utiliser inArray dans une instruction if utilisation:

if(jQuery.inArray("test", myarray) != -1) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
}

inArray retours -1 lorsque le premier argument passé à la fonction n'est pas trouvé dans le tableau passé en second argument.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X