Различать массив массивов и массив значений - PullRequest
0 голосов
/ 07 марта 2012

У меня есть два массива:

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 ]

4 голосов
/ 07 марта 2012

Подсказка: зациклите первый массив и определите, является ли один из объектов, который вы читаете, массивом.

Вот функция, которая может вам помочь:

function is_array(input){
    return typeof(input)=='object'&&(input instanceof Array);
}
1 голос
/ 07 марта 2012

Основная проблема в том, что в JavaScript typeof anArrayVariable возвращает object, как и typeof aRealObject - поэтому нет простого способа их различить.

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;
}

Iпредлагаю вам взглянуть на источник этого метода в jQuery и реализовать эту же идею в vanilla javascript.

1 голос
/ 07 марта 2012

В современном 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

0 голосов
/ 07 марта 2012

Проверьте тип первого элемента в массиве:

function checkArray(list) {
  return typeof(list[0]) == "object";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...