web-dev-qa-db-fra.com

Quelle est la meilleure procédure pour vérifier qu'un tableau est vide ou non dans jQuery?

J'utilise comme pour vérifier si le tableau n'est pas vide

if(array != null){
  //code 
}

J'ai aussi trouvé comme ça 

if(Array.isArray(array)){
//code
}

et

if(array.length){
//code
}

Lequel est préférable d'utiliser au-dessus de trois?

5

Je suggère d'utiliser Array.isArray et le length propriété du tableau

if (Array.isArray(array) && array.length) {
    // code
}

car il vérifie si array est un tableau et si la longueur a une valeur de vérité.


En comparant vos tentatives:

  1. Vérification de vérité

    if (array != null) { // which is basically the same as if (array) {
        //code 
    }
    

    Ceci est true pour toutes les valeurs de vérité, comme 1, 'a', {}. Ce résultat n'est pas recherché.

  2. Vérification de tableau

    if (Array.isArray(array)) {
        // code
    }
    

    Ceci vérifie uniquement si array est un tableau, mais pas sa longueur. Les tableaux vides retournent true, ce qui n'est pas souhaité.

  3. Vérification de la longueur

    if (array.length) {
        // code
    }
    

    Cela ne fonctionne que pour les objets qui peuvent avoir une propriété de longueur, qui ont une valeur de vérité.

    Bien que cela se rapproche du résultat souhaité, cela peut être faux, par exemple avec des objets comme

    { length: 'foo' }
    

    ou avec objets de type tableau .

8
Nina Scholz

Si vous voulez savoir si un objet est un tableau, alors Array.isArray() fera l'affaire.

Si vous voulez savoir si un tableau contient des éléments, alors array.length !== 0 fera l'affaire.

Si vous voulez savoir si une variable n'est pas nulle, ce que array !== null fera.

4
philipp

Il est préférable de vérifier la longueur du tableau, mais il y a un problème. Considérez si quelqu'un a entré une valeur non définie dans le tableau, celui-ci sera vide mais sa longueur sera toujours supérieure à 0.

for(var i=0,i<array.length;i++){
 if(typeof(array[i]) !== 'undefined'){

 };
};
1
Deep Mistry

Je suis habitué à array.lengthPour vérifier si le tableau n'est pas vide, utilisez if( array.length > 0) {}

1
gabriel
var isEmptyArray = function(arr) {
    return (arr || []).length === 0;
}

var arr1 = [1, 2, 3];
var arr2 = [];
var arr3 = undefined;

console.log(isEmptyArray(arr1));  // false
console.log(isEmptyArray(arr2));  // true
console.log(isEmptyArray(arr3));  // true
0
bugs_cena

la meilleure solution est 

if (array.length>0){
....
}

mais cette phrase a un problème si vous envisagez de supprimer des index du tableau, car vous pouvez avoir un tableau comme ceci [indéfini, indéfini, indéfini], dont la longueur est 3 mais techniquement vide.

var a = [1,2,3];
delete a[0];
delete a[1];
delete a[2];
a.length > 0 /// true
a /// [undefined x 3]

Prenez cela en considération pour faire la phrase exacte

0
Raising Spirit