Checking something isEmpty in Javascript?

后端 未结 18 2495
天涯浪人
天涯浪人 2020-12-12 12:38

How can I check if a variable is empty in Javascript? Sorry for the stupid question, but I\'m a newbie in Javascript!

if(response.photo) is empty {
    do so         


        
相关标签:
18条回答
  • 2020-12-12 12:48

    This is a bigger question than you think. Variables can empty in a lot of ways. Kinda depends on what you need to know.

    // 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;
    }
    
    0 讨论(0)
  • 2020-12-12 12:48

    const isEmpty = val => val == null || !(Object.keys(val) || val).length;

    0 讨论(0)
  • 2020-12-12 12:52

    This should cover all cases:

    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;
    }
    
    0 讨论(0)
  • 2020-12-12 12:52

    Combining answers from @inkednm into one function:

       function isEmpty(property) {
          return (property === null || property === "" || typeof property === "undefined");
       }
    
    0 讨论(0)
  • 2020-12-12 12:53

    What about doing like this.

    JSON.stringify({}) === "{}"

    0 讨论(0)
  • 2020-12-12 12:57

    I see potential shortcomings in many solutions posted above, so I decided to compile my own.
    Note: it uses Array.prototype.some, check your browser support.

    Solution below considers variable empty if one of the following is true:

    1. JS thinks that variable is equal to false, which already covers many things like 0, "", [], and even [""] and [0]
    2. Value is null or it's type is 'undefined'
    3. It is an empty Object
    4. It is an Object/Array consisting only of values that are empty themselves (i.e. broken down to primitives each part of it equals false). Checks drill recursively into Object/Array structure. E.g.

      isEmpty({"": 0}) // true
      isEmpty({"": 1}) // false
      isEmpty([{}, {}])  // true
      isEmpty(["", 0, {0: false}]) //true
      

    Function code:

    /**
     * Checks if value is empty. Deep-checks arrays and objects
     * Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
     * @param value
     * @returns {boolean}
     */
    function isEmpty(value){
      var isEmptyObject = function(a) {
        if (typeof a.length === 'undefined') { // it's an Object, not an Array
          var hasNonempty = Object.keys(a).some(function nonEmpty(element){
            return !isEmpty(a[element]);
          });
          return hasNonempty ? false : isEmptyObject(Object.keys(a));
        }
    
        return !a.some(function nonEmpty(element) { // check if array is really not empty as JS thinks
          return !isEmpty(element); // at least one element should be non-empty
        });
      };
      return (
        value == false
        || typeof value === 'undefined'
        || value == null
        || (typeof value === 'object' && isEmptyObject(value))
      );
    }
    
    0 讨论(0)
提交回复
热议问题