我有一个for循环,记录我的要素图层中每个要素的坐标数组。但奇怪的是,要素图层的第33个元素是一个包含3个数组的数组 - 长度为16,58和246.如何访问这些更深层次的数组 - 并将它们记录到控制台?
if (data.features.length > 0) {
for(var i = 0; i < features.length; i++){
console.log(i, features[i].geometry.coordinates)
}
}
答案 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]);
}
}
}