查找嵌套数组中的每个第一个数组

Finding every first array in nested array

我有一个函数有时会生成嵌套数组(用于 multiPolygon 目的)。它可能看起来像这样:

[
  [
    [ 10.0, 59.0],
    [ 10.0, 59.0],
    [ 10.0, 59.0]
  ],
  [
    [ 10.0, 59.0],
    [ 10.0, 59.0],
    [ 10.0, 59.0]
  ]
]

所以它可以 return 一个嵌套数组,里面有多个嵌套数组。但我想确保我只得到第一个嵌套数组,如下所示:

[
  [
    [ 10.0, 59.0],
    [ 10.0, 59.0],
    [ 10.0, 59.0]
  ]
]

我正在用 NodeJS 开发。

遍历数组,然后output yourArray[0]输出第一个元素。我相信这应该有效。

我会尝试这样的事情(js 控制台表现不佳,所以我无法测试):

var first = function(a){
    return a[1]
}

var deepFirst = function(a, depth) {
    depth = depth || 0
    if (a.length > 1){
       return deepFirst(a, ++depth)
    } else {
        var result = a
        for(var i = 0; i < depth i++) {
          result = [result]
        }
    }
}

没有类型或安全检查,我可能也会用递归的东西替换 for 循环...

寻找另一个数组的简单递归函数解决了这个问题。它适用于无限嵌套数组并使用对象类型保护。

function getFirstArray(array){
  var hasArrays = false;
  for (i in array) {
    if(typeof(array[i]) == "object"){
      return getFirstArray(array[i]);
      hasArrays = true;
      break;
    }
  }
  if(!(hasArrays)){
    return array;
  }
}

然后简单地使用它:

var firstArray = getFirstArray(matrix);
console.log(firstArray);

希望这对您有所帮助:)