【问题标题】:In Javascript how do I detect different kinds of elements in an array containing sub arrays and single elements? [duplicate]在 Javascript 中,如何检测包含子数组和单个元素的数组中的不同类型的元素? [复制]
【发布时间】:2016-03-24 04:48:09
【问题描述】:

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

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

例子:

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

【问题讨论】:

  • Bartek:好的 - 请给我一个代码示例,说明如何使用带有答案的其他问题检测子数组?
  • 循环遍历数组?
  • 我试过了。但是,当我使用 array[0] 时,我得到 1。我想我会得到那个子数组。但是,我只得到 1。我不是必须使用 array[0][0] 来得到 1 吗?

标签: javascript arrays


【解决方案1】:

循环检查:

[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,2,[4,5],3].map(Array.isArray); // [false, false, true, false]

【讨论】:

【解决方案2】:

您可以使用运算符typeof

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

尽管您一直在警告 typeof arrayobject。所以你需要使用instanceof 方法(或静态方法Array.isArray(your_variable))检查类。对于这个问题,你可以阅读这个问题 (How do you check if a variable is an array in JavaScript?)。

在您的特定情况下

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

【讨论】:

    【解决方案3】:

    使用instanceof:

     for(var i=0;i<your_array.length;i++){
            if(your_array[i] instanceof Array){
                   console.log("Subarray!");
            }else{
                   console.log("Not Subarray!");
            }
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2011-11-30
      • 2021-03-05
      • 1970-01-01
      • 2021-03-03
      • 2018-04-13
      • 2017-03-01
      相关资源
      最近更新 更多