javascript isEmpty

by Eric Miller

JavaScript

function isEmpty(obj) {
    var empty = false;
    
    if (obj === null) {
        empty = true;
    } else if (typeof (obj) === 'undefined') {
        empty = true;
    } else if(typeof(obj) === 'string' && obj.trim().length === 0){
    		empty = true;
    } else if(Array.isArray(obj) && obj.length === 0){
    		empty = true;
    } else if(typeof(obj) === 'object'){
    	if(Object.getOwnPropertyNames(obj).length === 0){
      	empty = true;
      } else {
      	var propsEmpty = true;
      	for (var key in obj) {
        	if(!isEmpty(obj[key])){
          	propsEmpty = false;
          	break;
          }
        }
        empty = propsEmpty;
      }
    }

    return empty;
}

var undefinedVar;

console.log('tests', {
	null_true: isEmpty(null),
  undefined_true: isEmpty(undefinedVar),
	string_true: isEmpty(''),
  string_false: isEmpty('foo'),
  stringSpace_true: isEmpty(' '),
  array_true: isEmpty([]),
  array_false: isEmpty(['a', 'b', 'c']),
  object_true: isEmpty({}),
  object_false: isEmpty({foo:'bar'}),
  objectProp_true: isEmpty({foo:'', bar:[], me:{}}),
  objectProp_false: isEmpty({foo:'', bar:['a'], me:{}}),
  number_false: isEmpty(0)
});