区分数组数组和值数组

Differentiate between array of arrays and array of values

本文关键字:数组      更新时间:2023-09-26

我有两个数组:

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内部的数组数量总是变化的。

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

这里有一个功能可以帮助你:

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

在现代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

这方面的主要问题是,在JavaScript中,typeof anArrayVariabletypeof aRealObject一样返回object,因此没有简单的方法来区分它们。

jQuery通过方法$.isArray()在一定程度上修复了这一问题,该方法正确地为数组返回true,为对象、数字、字符串或布尔值返回false。

因此,使用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中查看该方法的源代码,并在普通javascript中实现同样的想法。

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

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