1

我有一个有时会生成嵌套数组的函数(用于 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]
  ]
]

所以它可以返回一个嵌套数组,里面有多个嵌套数组。但我想让舒尔只得到第一个嵌套数组,如下所示:

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

我在 NodeJS 中开发。

4

3 回答 3

3

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

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

希望这可以帮助 :)

于 2015-08-28T12:45:50.903 回答
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 循环......

于 2015-08-28T11:46:18.600 回答
0

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

于 2015-08-28T11:34:12.063 回答