我正在尝试检查数组中是否存在某个节点,但似乎无法使我的if语句正确。
我现在有:
if (obj2["spec"]["3"]["spec2"]["14"] != null) { do stuff }
在某些情况下[14]不存在,因为数组长度只有5或6,所以如果[14]中没有任何项目,请确保它不会尝试做任何事情。
答案 0 :(得分:-2)
您的代码段是正确的,当节点不存在时,未定义,但在非严格比较中,undefined == null。 如果节点不存在,将显示错误。如果你使用typeof,这将涵盖所有节点是否有效。
实施例
// ["spec2"] is undefined, this case will show a error.
if(array["spec"]["3"]["spec2"]["14"] != undefined) {
}
// This doesn't he show error, if "specs2" is undefined.
if(typeof array["spec"]["3"]["spec2"]["14"] !== "undefined") {
}
答案 1 :(得分:-2)
如果数组长度只有5或6,则意味着元素14
甚至不存在,你应该检查undefined not null:
if(typeof array["spec"]["3"]["spec2"]["14"] !== "undefined")
或:
if(array["spec"]["3"]["spec2"]["14"] !== undefined)
甚至:
if(!array["spec"]["3"]["spec2"]["14"])
我会推荐一个选项,但它真的归结为偏好,我宁愿不要煽动风格/最佳实践战争:)只需选择你喜欢的。
Here's a thorough explanation on the difference between null and undefined,但基本上null
表示值为null
,而未定义表示该变量尚未声明。