在jQuery中检查数组的最佳过程是空的还是空的?

时间:2017-05-31 06:44:55

标签: javascript jquery

我用来检查数组是否为空

if(array != null){
  //code 
}

我也找到了那样的

if(Array.isArray(array)){
//code
}

if(array.length){
//code
}

哪一个最好使用三个以上?

6 个答案:

答案 0 :(得分:9)

我建议使用Array.isArraylengtharray属性

if (Array.isArray(array) && array.length) {
    // code
}

因为它会检查array是否为数组且长度是否为真值。

比较你的尝试:

  1. Truthy check

    if (array != null) { // which is basically the same as if (array) {
        //code 
    }
    

    对于所有真实值,这是true,例如1'a'{}。这个结果不是必需的。

  2. 数组检查

    if (Array.isArray(array)) {
        // code
    }
    

    仅在array是数组时检查,而不是它的长度。空数组返回true,这是不需要的。

  3. 长度检查

    if (array.length) {
        // code
    }
    

    这仅适用于可能具有长度属性且具有真值的对象。

    虽然这接近想要的结果,但它可能是错误的,例如像

    这样的对象
    { length: 'foo' }
    

    array-like objects

答案 1 :(得分:4)

如果你想知道一个Object是否是一个数组,那么Array.isArray()就可以了。

如果你想知道一个数组是否有项目,那么array.length !== 0会有。

如果您想知道某个变量是否为空,而不是array !== null将会这样做。

答案 2 :(得分:1)

我习惯array.length 要检查数组是否为空,请使用if( array.length > 0) {}

答案 3 :(得分:1)

最好检查阵列的长度,但其中有一个问题。考虑是否有人在数组中输入了未定义的值,那么数组将为空但仍然具有大于0的长度。

for(var i=0,i<array.length;i++){
 if(typeof(array[i]) !== 'undefined'){

 };
};

答案 4 :(得分:0)

var isEmptyArray = function(arr) {
    return (arr || []).length === 0;
}

var arr1 = [1, 2, 3];
var arr2 = [];
var arr3 = undefined;

console.log(isEmptyArray(arr1));  // false
console.log(isEmptyArray(arr2));  // true
console.log(isEmptyArray(arr3));  // true

答案 5 :(得分:0)

最佳解决方案是

if (array.length>0){
....
}

但如果您计划从数组中删除索引,则此句有问题,因为您可以拥有这样的数组[undefined,undefined,undefined],长度为3但技术上是空的。

var a = [1,2,3];
delete a[0];
delete a[1];
delete a[2];
a.length > 0 /// true
a /// [undefined x 3]

考虑到这一点来制作确切的句子