我有一些if语句,我想验证数组的长度。让我们说以下是:
if (object.someArray.length > 1){
doSomething()
}
但是,当someArray没有定义时(可能没有为某个对象定义,这是可能的),我收到一个错误:
Cannot read property 'length' of null
这是有道理的,因为object.someArray
未定义。
我的问题是:以最少的步骤验证数组是否存在及其长度的最佳方法是什么?
谢谢!
答案 0 :(得分:3)
非常通用且完整的测试:如果数组存在且不为空
if(object && object.someArray && object.someArray.length)
对于你的情况:
if(object.someArray && object.someArray.length > 1)
编辑:对于那些不知道这被称为鸭子打字的人:我们不确定对象是否是一个数组,我们正在考虑如果该对象有一个属性< strong>长度,它是一个数组。很多图书馆都这样做。只要您不在同一个变量中存储不同类型的javascript对象(字符串/数组/对象),此代码就是安全的。
答案 1 :(得分:2)
尝试通过https://jsfiddle.net/x6z6w0n8/7/
检查数组String string = yourString.replaceAll("[^\\x00-\\x7F]", "");
答案 2 :(得分:1)
你可以在一个单一的条件下完成,比如
if (object.someArray && object.someArray.length > 1){
//Do Something
}
如果未定义object.someArray
,则返回false并且不会评估下一个条件
答案 3 :(得分:0)
验证数组是否存在及其长度的最佳方法
最好的方法就是按照你写的那样做:
if (array && array.length > 0 { ... }
答案 4 :(得分:0)
你可以这样检查。
if(object.someArray && object.someArray.length > 1) {
doSomething();
}
如果someArray不存在那么它将是假的,并且由于短路它永远不会检查它的长度。