96 votes

Vous vérifiez que quelque chose est vide dans Javascript ?

Comment puis-je vérifier si une variable est vide dans Javascript ? Désolé pour la question stupide, mais je suis un débutant en Javascript !

if(response.photo) is empty {
    do something
else {
    do something else
}

response.photo provenait de JSON, et il pouvait être vide parfois, des cellules de données vides ! Je veux vérifier s'il est vide.

148voto

inkedmn Points 12655

Si vous testez une chaîne vide :

if(myVar === ''){ // do stuff };

Si vous recherchez une variable qui a été déclarée, mais pas définie :

if(myVar === null){ // do stuff };

Si vous recherchez une variable qui peut ne pas être définie :

if(myVar === undefined){ // do stuff };

Si vous cochez les deux, c'est-à-dire que l'une ou l'autre des variables est nulle ou non définie :

if(myVar == null){ // do stuff };

57voto

Hemlock Points 3623

C'est une question plus importante que vous ne le pensez. Les variables peuvent se vider de plusieurs façons. Cela dépend de ce que vous devez savoir.

// quick and dirty will be true for '', null, undefined, 0, NaN and false.
if (!x) 

// test for null OR undefined
if (x == null)  

// test for undefined OR null 
if (x == undefined) 

// test for undefined
if (x === undefined) 
// or safer test for undefined since the variable undefined can be set causing tests against it to fail.
if (typeof x == 'undefined') 

// test for empty string
if (x === '') 

// if you know its an array
if (x.length == 0)  
// or
if (!x.length)

// BONUS test for empty object
var empty = true, fld;
for (fld in x) {
  empty = false;
  break;
}

14voto

pluto puppy Points 161

Cela devrait couvrir tous les cas :

function empty( val ) {

    // test results
    //---------------
    // []        true, empty array
    // {}        true, empty object
    // null      true
    // undefined true
    // ""        true, empty string
    // ''        true, empty string
    // 0         false, number
    // true      false, boolean
    // false     false, boolean
    // Date      false
    // function  false

        if (val === undefined)
        return true;

    if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]')
        return false;

    if (val == null || val.length === 0)        // null or 0 length array
        return true;

    if (typeof (val) == "object") {
        // empty object

        var r = true;

        for (var f in val)
            r = false;

        return r;
    }

    return false;
}

4voto

Prabu samvel Points 1316

Voici ma solution la plus simple.

Inspiré par la fonction empty PHP

function empty(n){
	return !(!!n ? typeof n === 'object' ? Array.isArray(n) ? !!n.length : !!Object.keys(n).length : true : false);
}

//with number
console.log(empty(0));        //true
console.log(empty(10));       //false

//with object
console.log(empty({}));       //true
console.log(empty({a:'a'}));  //false

//with array
console.log(empty([]));       //true
console.log(empty([1,2]));    //false

//with string
console.log(empty(''));       //true
console.log(empty('a'));      //false

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X