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

时间:2015-08-28 11:24:15

标签: javascript arrays node.js turfjs

我有一个函数,有时会生成一个嵌套数组(用于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中开发。

3 个答案:

答案 0 :(得分: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);

希望这会有所帮助:)

答案 1 :(得分:0)

循环遍历数组,然后输出yourArray [0]以输出第一个元素。我认为应该有用。

答案 2 :(得分: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循环......