如何在 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 中检查此布尔哈希图是不是为空? [复制]的主要内容,如果未能解决你的问题,请参考以下文章