区分数组数组和值数组

时间:2012-03-07 09:18:48

标签: javascript arrays multidimensional-array

我有两个数组:

var firstarray = [123, 13, 34, 12, 63, 63];

var secondarray = [[10,20,10], [122, 123, 53], [542, 234, 12, 331]];

我需要一个像这样的功能:

function checkArray(array){
    //if array contains multiple arrays, return true
    //if the array contains only values, return false
}

secondarray内的数组总是有变化的。

4 个答案:

答案 0 :(得分:4)

提示:循环第一个数组并确定您正在读取的对象之一是否为数组。

这是一个可以帮助您的功能:

function is_array(input){
    return typeof(input)=='object'&&(input instanceof Array);
}

答案 1 :(得分:1)

在现代Javascript中:

 myAry.every(Array.isArray) // returns true if all elements of myAry are arrays

引用(以及旧浏览器的替换):

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray

答案 2 :(得分:1)

主要问题是JavaScript typeof anArrayVariableobject一样返回typeof aRealObject - 所以没有简单的方法来区分它们。

jQuery在某种程度上使用方法$.isArray()修复了这个问题,该方法对于数组正确返回true,对于对象,数字,字符串或布尔值正确返回。

因此,使用jQuery就变得如此简单:

function checkArray(array){
    //if array contains multiple arrays, return true
    //if the array contains only values, return false

    for(var i=0;i<array.length;i++){
      if($.isArray(array[i]))   
          return true;
    }
    return false;
}

我建议您可以在jQuery中查看该方法的源代码,并在vanilla javascript中实现相同的想法。

答案 3 :(得分:0)

检查数组中第一个元素的类型:

function checkArray(list) {
  return typeof(list[0]) == "object";
}