如何在 javascript 中检查此布尔哈希图是不是为空? [复制]

Posted

技术标签:

【中文标题】如何在 javascript 中检查此布尔哈希图是不是为空? [复制]【英文标题】:How do I check this boolean hashmap is empty in javascript? [duplicate]如何在 javascript 中检查此布尔哈希图是否为空? [复制] 【发布时间】:2011-09-16 22:52:06 【问题描述】:

可能的重复:Object comparison in javascriptHow do I test for an empty Javascript object from JSON?

var abc = ;
console.log(abc==) //false, why?

为什么是假的?如何匹配一个空白的哈希映射...?

【问题讨论】:

是一个新对象。所以 abc !== "a new object" 因为 abc 是另一个对象 我要匹配:"abc" 是空白哈希图吗。 @Ikke 我认为这不是那个的副本。这里我们有一个关于空对象的有趣点。 【参考方案1】:

是一个新的对象实例化。 所以 abc !== "a new object" 因为 abc 是另一个对象。

这个测试有效:

var abc = ;
var abcd = 
  "no": "I am not empty"


function isEmpty(obj) 
  for (var o in obj)
    if (o) return false;
  return true;


console.log("abc is empty? " + isEmpty(abc))
console.log("abcd is empty? " + isEmpty(abcd))

更新:刚刚看到其他几个人提出了相同的建议,但使用 hasOwnProperty

我无法验证我的和他们的在 IE8 和 Fx4 上的差异,但希望能得到启发

【讨论】:

检查typeof abc如何帮助了解它是否为空对象? @nnnnnn 请查看更新和其他答案测试对象中的属性 hasOwnProperty 需要区分从原型链继承的属性(不应使对象“非空”)和自己的属性。当你编写一个函数时,你可能不想只在 上使用它:)。【参考方案2】:
if (abc.toSource() === "()")  // then `a` is empty

function isEmpty(abc) 
    for(var prop in abc) 
        if(abc.hasOwnProperty(prop))
            return false;
    
    return true;

【讨论】:

【参考方案3】:
var abc = ;

这会创建一个对象

所以你可以尝试以下类型:

if (typeof abc == "object")...

【讨论】:

【参考方案4】:

语句var abc = ; 创建一个新的(空)对象并将变量abc 指向该对象。

测试abc == 创建第二个新(空)对象并检查abc 是否指向相同 对象。它没有,因此false

没有内置方法(据我所知)来确定对象是否为空,但您可以编写自己的短函数来执行此操作:

function isObjectEmpty(ob) 
   for (var prop in ob)
      if (ob.hasOwnProperty(prop))
         return false;

   return true;

hasOwnProperty() 检查是忽略原型链中的属性,而不是直接在对象中。)

注意:术语“对象”是您要使用的,而不是“哈希图”。

【讨论】:

以上是关于如何在 javascript 中检查此布尔哈希图是不是为空? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何逐行编写 EDN? (吐,哈希图的序列)

等待哈希图更改的调用函数

如何将哈希图转换为数组?

如何“忽略”哈希图的模板参数?

如何使用意图将哈希图值发送到另一个活动

如何使一个类中的私有哈希图对其他类可见[关闭]