Détails
Comment trouver si un tableau contient une chaîne spécifique en JavaScript/jQuery ?
Quelqu'un peut-il me dire comment détecter si "specialword" apparaît dans un tableau ? Exemple :
categories: [
"specialword"
"word1"
"word2"
]
564
3
jQuery propose [
$.inArray
][1] :Notez que inArray renvoie l'index de l'élément trouvé, donc
0
indique que l'élément est le premier dans le tableau.-1
indique que l'élément n'a pas été trouvé.Edit 3.5 ans plus tard
$.inArray
est effectivement un wrapper pourArray.prototype.indexOf
dans les navigateurs qui le supportent (presque tous de nos jours), tout en fournissant un shim dans ceux qui ne le font pas. Cela revient essentiellement à ajouter un shim àArray.prototype
, ce qui est une façon plus idiomatique de faire les choses. MDN fournit [un tel code][2]. De nos jours, je choisirais cette option plutôt que d'utiliser le wrapper jQuery.Editer un autre 3 ans plus tard
Mon dieu, 6,5 ans ?!
La meilleure option pour cela dans le Javascript moderne est
Array.prototype.includes
:Pas de comparaisons et pas de résultats confus
-1
. Il fait ce que nous voulons : il renvoie " vrai " ou " faux ". Pour les navigateurs plus anciens, il est possible d'utiliser le code de MDN [3].[1] : http://api.jquery.com/jQuery.inArray [2] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Polyfill [3] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
Voilà :
Cette fonction retourne un entier positif (l'index du tableau de la valeur donnée), ou
-1
si la valeur donnée n'a pas été trouvée dans le tableau.Démonstration en direct: http://jsfiddle.net/simevidas/5Gdfc/
Vous voudrez probablement l'utiliser comme ceci :
Vous pouvez utiliser une boucle
for
: