检查数组中是否存在节点

时间:2016-12-22 16:48:52

标签: javascript jquery

我正在尝试检查数组中是否存在某个节点,但似乎无法使我的if语句正确。

我现在有:

if (obj2["spec"]["3"]["spec2"]["14"] != null) { do stuff }

在某些情况下[14]不存在,因为数组长度只有5或6,所以如果[14]中没有任何项目,请确保它不会尝试做任何事情。

2 个答案:

答案 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,而未定义表示该变量尚未声明。