Quel est le moyen le plus simple et le plus efficace de savoir si un tableau JavaScript contient une valeur ?
C'est la seule façon que je connaisse :
fonction contient(a, obj) { pour (var i = 0; i < a.length; i++) { si (a[i] === obj) { renvoie vrai ; } } renvoie faux ; }Existe-t-il un moyen meilleur et plus propre d’y parvenir ?
Ceci est lié à la question Stack Overflow Quelle est la meilleure façon de trouver des éléments dans un tableau JavaScript ? Étroitement liée, cette question concerne la recherche d'objets dans un tableau à l'aide de
indexOf
.
Mise à jour 2019 : cette réponse date de 2008 (11 ans !) et n'a rien à voir avec l'utilisation moderne du JS. Les améliorations de performances promises sont basées sur des tests de référence effectués dans le navigateur à ce moment-là. Cela n'est peut-être pas pertinent pour le contexte d'exécution JS moderne. Si vous avez besoin d’une solution simple, recherchez d’autres réponses. Si vous avez besoin des meilleures performances, évaluez-vous dans un environnement d'exécution pertinent.
Comme d'autres l'ont dit, parcourir un tableau est probablement la meilleure façon de le faire, mais ila été prouvéqu'une boucle
while
descendante est le moyen le plus rapide d'itérer en JavaScript. Par conséquent, vous devrez peut-être réécrire votre code comme suit :Bien sûr, vous pouvez également étendre le prototype Array :
Maintenant, vous pouvez simplement utiliser :
Les navigateurs modernes ont
Array#includes
quifait exactement cela etest largement pris en charge par tout le monde sauf IE: