Comment vérifier si un tableau contient une valeur en JavaScript ?
P粉592085423
P粉592085423 2023-08-23 11:09:10
0
2
414
<p>Quel est le moyen le plus simple et le plus efficace de savoir si un tableau JavaScript contient une valeur ? </p> <p>C'est la seule façon que je connaisse :</p> <pre class="brush:php;toolbar:false;">fonction contient(a, obj) { pour (var i = 0; i < a.length; i++) { si (a[i] === obj) { renvoie vrai ; } } renvoie faux ; }</pré> <p>Existe-t-il un moyen meilleur et plus propre d’y parvenir ? </p> <p>Ceci est lié à la question Stack Overflow <em>Quelle est la meilleure façon de trouver des éléments dans un tableau JavaScript ? </em> Étroitement liée, cette question concerne la recherche d'objets dans un tableau à l'aide de <code>indexOf</code>. </p>
P粉592085423
P粉592085423

répondre à tous(2)
P粉788571316

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 il a é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 :

function contains(a, obj) {
    var i = a.length;
    while (i--) {
       if (a[i] === obj) {
           return true;
       }
    }
    return false;
}

Bien sûr, vous pouvez également étendre le prototype Array :

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
}

Maintenant, vous pouvez simplement utiliser :

alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains('2')); // => false
P粉076987386

Les navigateurs modernes ont Array#includes qui fait exactement cela et est largement pris en charge par tout le monde sauf IE  :

console.log(['joe', 'jane', 'mary'].includes('jane')); // true
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!