问题描述
您好,我期望obj = {a:-2},但正在获取obj = {a:0}。即使键存在obj [string [0],它似乎也没有输入if语句。
该怎么写?在不使用for in循环的情况下检查对象是否具有索引的最佳方法是什么,因为这将花费额外的O(n)时间。谢谢!
解决方法
以下内容显示了为什么未命中if语句的原因:
> obj[string[0]];
0
> obj[string[0]] == true
false
> obj[string[0]] == 0;
true
> 0 == true
false
> 0 == false
true
您可以将if语句更改为obj[string[0]] == 0
,以使if语句中的代码求值。另请参阅:
https://developer.mozilla.org/en-US/docs/Glossary/Falsy
告诉我们0是虚假的。
,此处obj.a = 0,而0是javascript中的虚假值。这就是为什么它没有碰到if循环的原因。
要检查对象中是否存在键,可以使用下面的两种返回布尔值的方法。
-
obj.hasOwnProperty(key)
-
obj中的键
if(obj.hasOwnProperty(x [0])){ obj [x [0]]- }