Javascript:检查对象是不是没有属性或映射/关联数组是不是为空[重复]

Posted

技术标签:

【中文标题】Javascript:检查对象是不是没有属性或映射/关联数组是不是为空[重复]【英文标题】:Javascript: Checking if an object has no properties or if a map/associative-array is empty [duplicate]Javascript:检查对象是否没有属性或映射/关联数组是否为空[重复] 【发布时间】:2011-03-26 12:20:01 【问题描述】:

可能重复:How do I test for an empty javascript object from JSON?

在 Javascript 中是否有一种简单的方法来检查对象是否没有属性?或者换句话说,一种检查映射/关联数组是否为空的简单方法?例如,假设您有以下内容:

var nothingHere = ;
var somethingHere = foo: "bar";

有没有一种简单的方法来判断哪个是“空的”?我唯一能想到的是这样的:

function isEmpty(map) 
   var empty = true;

   for(var key in map) 
      empty = false;
      break;
   

   return empty;

有没有更好的方法(比如原生属性/函数之类的)?

【问题讨论】:

欺骗-***.com/questions/5223/… @Daniel - 感谢您提供该问题的链接。我尝试在 SO 上搜索,但没有找到任何东西。模组 - 请关闭这个问题。谢谢! 由于 hasOwnProperty 调用,我会选择 chryss 的解决方案而不是您的解决方案。如果有任何东西扩展了 Object 原型(许多库都这样做),您的方法将不再返回正确的结果,因为它会读取继承的属性。 @Daniel 是的,我也喜欢这个原因。原型似乎以这种方式污染了命名空间。 【参考方案1】:

试试这个:

function isEmpty(map) 
   for(var key in map) 
     if (map.hasOwnProperty(key)) 
        return false;
     
   
   return true;

您的解决方案也有效,但前提是没有扩展 Object 原型的库。它可能不够好,也可能不够好。

【讨论】:

hasOwnProperty 调用在这里非常重要,如果任何库都在搞乱Object 原型。 +1 谢谢。我把这句话放在解决方案中——我已经采用了一段时间的 hasOwnPrototype 调用,甚至不再考虑它了。 您甚至都没有考虑过它,实际上您将其称为 hasOwnPrototype。大声笑

以上是关于Javascript:检查对象是不是没有属性或映射/关联数组是不是为空[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查 JSP 中是不是存在属性

PHP检查对象或类中是不是存在属性

如何检查对象是不是在 JavaScript 中具有特定属性?

PLSQL - 检查对象表中是不是存在对象 - 类型没有映射

JavaScript,检查嵌套对象属性是不是为空/未定义的优雅方法[重复]

检查 JavaScript 中是不是存在深度嵌套对象属性的最简单方法是啥? [复制]