Javascript:检查对象是否没有属性或映射/关联数组是否为空
可能重复:Javascript:检查对象是否没有属性或映射/关联数组是否为空,javascript,map,associative-array,is-empty,object-property,Javascript,Map,Associative Array,Is Empty,Object Property,可能重复: 在Javascript中,是否有一种简单的方法可以检查对象是否没有属性?或者换句话说,检查贴图/关联数组是否为空的简单方法?例如,假设您有以下情况: var nothingHere = {}; var somethingHere = {foo: "bar"}; 有没有一个简单的方法来判断哪一个是“空的”?我唯一能想到的是这样的事情: function isEmpty(map) { var empty = true; for(var key in map) {
在Javascript中,是否有一种简单的方法可以检查对象是否没有属性?或者换句话说,检查贴图/关联数组是否为空的简单方法?例如,假设您有以下情况:
var nothingHere = {};
var somethingHere = {foo: "bar"};
有没有一个简单的方法来判断哪一个是“空的”?我唯一能想到的是这样的事情:
function isEmpty(map) {
var empty = true;
for(var key in map) {
empty = false;
break;
}
return empty;
}
是否有更好的方法(如本机属性/函数或其他方法)?尝试以下方法:
function isEmpty(map) {
for(var key in map) {
if (map.hasOwnProperty(key)) {
return false;
}
}
return true;
}
您的解决方案也可以工作,但前提是没有扩展
对象的库。这可能不够好,也可能不够好。Dupe-@Daniel-谢谢你提供这个问题的链接。我试着继续搜索,但什么也没找到。Mods-请结束此问题。谢谢因为hasOwnProperty的电话,我会选择chryss的解决方案而不是你的。如果有任何东西扩展了对象原型(许多库都会这样做),您的方法将不再返回正确的结果,因为它将读取继承的属性。@Daniel是的,我也因此喜欢它。Prototype似乎以这种方式污染了名称空间。hasOwnProperty
调用在这里非常重要,如果有库在处理对象
Prototype+1谢谢。我把这句话放在解决方案中——我已经采用hasOwnPrototype调用有一段时间了,甚至不再考虑它。你甚至不再考虑它,事实上你称它为hasOwnPrototype。英雄联盟