循环遍历数组

时间:2017-07-09 21:28:25

标签: javascript arrays for-loop

我有一个for循环,记录我的要素图层中每个要素的坐标数组。但奇怪的是,要素图层的第33个元素是一个包含3个数组的数组 - 长度为16,58和246.如何访问这些更深层次的数组 - 并将它们记录到控制台?

enter image description here

if (data.features.length > 0) {
    for(var i = 0; i < features.length; i++){
        console.log(i, features[i].geometry.coordinates)
    }
}

2 个答案:

答案 0 :(得分:3)

您可以使用如下的递归:

function iterateArray(array) {
  array.forEach((item) => {
    if (Array.isArray(item)) {
      iterateArray(item);
    }
    else {
      console.log(item);
    }
  });
}

var array = [1, 2, [3, 4, 5], [6, [7, [8, 9]]]];

iterateArray(array);

答案 1 :(得分:0)

另一个解决方案是检查数组中的Object是否是Array的实例。

如果它是另一个数组的实例,则只递归调用该函数。

解决方案如下所示:

var arr = [1, 2, [4,5,6], [9,5,6,7]];
printArray(arr);
printArray(null);

function printArray(arr){
    if(arr == null || arr == undefined){
      return;
    }
    
    if(arr.length == 0){
      return;
    }
    
    for(var i = 0; i < arr.length; i++){
        if(arr[i] instanceof Array){
           printArray(arr[i]);
        } else{
           console.log(arr[i]);
        }
    }
}