如何验证数组是否存在及其长度是否最少?

时间:2016-03-01 10:42:16

标签: javascript arrays

我有一些if语句,我想验证数组的长度。让我们说以下是:

if (object.someArray.length > 1){
  doSomething()
} 

但是,当someArray没有定义时(可能没有为某个对象定义,这是可能的),我收到一个错误:

Cannot read property 'length' of null

这是有道理的,因为object.someArray未定义。

我的问题是:以最少的步骤验证数组是否存在及其长度的最佳方法是什么?

谢谢!

5 个答案:

答案 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不存在那么它将是假的,并且由于短路它永远不会检查它的长度。