Vérifiez si le tableau est vide / n'existe pas. JS [duplicate]

cette question a déjà une réponse ici:

  • Comment vérifier si un tableau existe, sinon comment le créer, en JavaScript? 7 réponses

Quelle est la meilleure façon de vérifier si un tableau est vide ou n'existe pas?

quelque chose comme ça?

if(array.length < 1 || array == undefined){
    //empty
}
118
demandé sur Robby Cornelissen 2014-06-25 12:28:50

1 réponses

vous voulez faire le contrôle pour undefined d'abord. Si vous le faites dans l'autre sens, il va générer une erreur si le tableau n'est pas défini.

if (array === undefined || array.length == 0) {
    // array empty or does not exist
}

mise à Jour

cette réponse reçoit beaucoup d'attention, donc je tiens à souligner que ma réponse originale, plus que toute autre chose, a abordé le mauvais ordre des conditions évaluées dans la question. En ce sens, il ne parvient pas à répondre plusieurs scénarios, tels que les valeurs null , d'autres types d'objets avec une propriété length , etc.

en prenant un peu d'inspiration des commentaires, ci-dessous est ce que je considère actuellement comme la meilleure façon de vérifier si un tableau est vide ou n'existe pas. Il tient également compte du fait que la variable peut ne pas se référer à un tableau, mais à un autre type d'objet avec une propriété length .

if (!Array.isArray(array) || !array.length) {
  // array does not exist, is not an array, or is empty
}

pour le décomposer:

  1. Array.isArray() , sans surprise, vérifie si son argument est un tableau. Cela élimine les valeurs comme null , undefined et tout ce qui n'est pas un tableau.

    Notez que cela éliminera également objets de type tableau , tels que les arguments objet et DOM NodeList objets. Selon votre situation, ce n'est peut-être pas le comportement que vous recherchez.

  2. la condition array.length vérifie si la propriété length de la variable est évaluée à une valeur truthy . Parce que la condition précédente a déjà établi que nous avons effectivement affaire à un tableau, des comparaisons plus strictes comme array.length != 0 ou array.length !== 0 ne sont pas nécessaires ici.

224
répondu Robby Cornelissen 2017-03-16 02:07:06