查找嵌套数组中的每个第一个数组
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);
希望这对您有所帮助:)
我有一个函数有时会生成嵌套数组(用于 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);
希望这对您有所帮助:)