对象是空的吗?[重复]

检查对象是否为空的最快方法是什么?

有没有比这更快更好的方法:

function count_obj(obj){
    var i = 0;
    for(var key in obj){
        ++i;
    }

    return i;
}
梅老丝2020/03/12 17:58:41

May be you can use this decision:

var isEmpty = function(obj) {
  for (var key in obj)
    if(obj.hasOwnProperty(key))
      return false;
  return true;
}
Davaid神无2020/03/12 17:58:41

You can write a fallback if Array.isArray and Object.getOwnPropertyNames is not available

XX.isEmpty = function(a){
    if(Array.isArray(a)){
        return (a.length==0);
    }
    if(!a){
        return true;
    }
    if(a instanceof Object){

        if(a instanceof Date){
            return false;
        }

        if(Object.getOwnPropertyNames(a).length == 0){
            return true;
        }
    }
    return false;
}
Mandy番长2020/03/12 17:58:41
funtion isEmpty(o,i)
{
    for(i in o)
    {
        return!1
    }
    return!0
}
番长GreenL2020/03/12 17:58:41

https://lodash.com/docs#isEmpty comes in pretty handy:

_.isEmpty({})   // true
_.isEmpty()     // true
_.isEmpty(null) // true
_.isEmpty("")   // true
前端Mandy2020/03/12 17:58:41

It might be a bit hacky. You can try this.

if (JSON.stringify(data).length === 2) {
   // Do something
}

Not sure if there is any disadvantage of this method.

斯丁2020/03/12 17:58:41

How bad is this?

function(obj){
    for(var key in obj){
        return false; // not empty
    }

    return true; // empty
}
猴子蛋蛋2020/03/12 17:58:41
function isEmpty( o ) {
    for ( var p in o ) { 
        if ( o.hasOwnProperty( p ) ) { return false; }
    }
    return true;
}
JinJinSam2020/03/12 17:58:41

编辑:请注意,您可能应该使用ES5解决方案来代替它,因为近来对ES5的支持非常广泛它仍然适用于jQuery。


简单而跨浏览器的方式是通过使用jQuery.isEmptyObject

if ($.isEmptyObject(obj))
{
    // do something
}

更多:http : //api.jquery.com/jQuery.isEmptyObject/

你需要jQuery。

村村达蒙LEY2020/03/12 17:58:41

优雅的方式-使用按键

var myEmptyObj = {};
var myFullObj = {"key":"value"};
console.log(Object.keys(myEmptyObj).length); //0
console.log(Object.keys(myFullObj).length); //1

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

卡卡西Tom2020/03/12 17:58:41

对于ECMAScript5(尽管并非所有浏览器都支持),您可以使用:

Object.keys(obj).length === 0
梅A飞云2020/03/12 17:58:41

如果您不介意添加额外的库,则下划线lodash都具有便捷的isEmpty()功能。

_.isEmpty({});