2017-07-09 16 views
1

フィーチャーレイヤーの各フィーチャーの座標配列を記録するforループがあります。しかし、奇妙なことに、フィーチャレイヤーの33番目の要素は、長さが16,58、および246の3つの配列の配列です。これらの配列を1レベル深くアクセスするにはどうしたらいいですか?配列内のループスルー配列

enter image description here

if (data.features.length > 0) { 
    for(var i = 0; i < features.length; i++){ 
     console.log(i, features[i].geometry.coordinates) 
    } 
} 

答えて

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

0

別の解決策は、配列内のオブジェクトを配列のインスタンスである場合だけで確認することですか否か。

別の配列のインスタンスの場合は、その関数を再帰的に呼び出します。

ソリューションは、次のようになります。

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

関連する問題