在JavaScript中如何给不同的奇特的探明of元素含arrays安子阵列和单元素?

In Javascript how do I detect different kinds of elements in an array containing sub arrays and single elements?

本问题已经有最佳答案,请猛点这里访问。

我得到了一个包含子数组和单个元素的数组中的数据。我不知道主数组中有多少元素是子数组,或者有多少是单个元素,或者在子数组中有多少元素,或者子数组将在主数组中。

有没有方法可以检测子数组或单个元素?

例子:

1
array[ [1,2,3], 4, 5]


循环和检查:

1
2
3
4
5
[1,2,[4,5],3].forEach((item, i) => {
    if (Array.isArray(item)) {
        console.log(`Item ${i} is an array!`); // Item 2 is an array!
    }
})

或映射到布尔:

1
[1,2,[4,5],3].map(Array.isArray); // [false, false, true, false]


使用instanceof

1
2
3
4
5
6
7
 for(var i=0;i<your_array.length;i++){
        if(your_array[i] instanceof Array){
               console.log("Subarray!");
        }else{
               console.log("Not Subarray!");
        }
 }


您可以使用操作符typeof

1
2
typeof 1; //number
typeof 'hola'; //string

尽管你一直警告说,typeof arrayobject。因此,您需要使用instanceof方法(或静态方法Array.isArray(your_variable)检查类。对于这个问题,您可以阅读这个问题(如何检查变量是否是javascript中的数组?).

在你的特定情况下

1
2
3
4
5
6
7
8
9
[1, 2, 3, ['a','b']].forEach(function(element){
    if(typeof(element) === 'number'){
       //todo
    }elseif(typeof(element) === 'string'){
      //todo
    }elseif(Array.isArray(element){
        //todo array element
    }
});