检查对象是否为空的最快方法是什么?
有没有比这更快更好的方法:
function count_obj(obj){
var i = 0;
for(var key in obj){
++i;
}
return i;
}
检查对象是否为空的最快方法是什么?
有没有比这更快更好的方法:
function count_obj(obj){
var i = 0;
for(var key in obj){
++i;
}
return i;
}
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;
}
funtion isEmpty(o,i)
{
for(i in o)
{
return!1
}
return!0
}
https://lodash.com/docs#isEmpty comes in pretty handy:
_.isEmpty({}) // true
_.isEmpty() // true
_.isEmpty(null) // true
_.isEmpty("") // true
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.
How bad is this?
function(obj){
for(var key in obj){
return false; // not empty
}
return true; // empty
}
function isEmpty( o ) {
for ( var p in o ) {
if ( o.hasOwnProperty( p ) ) { return false; }
}
return true;
}
编辑:请注意,您可能应该使用ES5解决方案来代替它,因为近来对ES5的支持非常广泛。它仍然适用于jQuery。
简单而跨浏览器的方式是通过使用jQuery.isEmptyObject
:
if ($.isEmptyObject(obj))
{
// do something
}
更多:http : //api.jquery.com/jQuery.isEmptyObject/
你需要jQuery。
优雅的方式-使用按键
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
对于ECMAScript5(尽管并非所有浏览器都支持),您可以使用:
Object.keys(obj).length === 0
May be you can use this decision: