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。英雄联盟