2017-07-09 8 views
1

Ich habe eine for-Schleife, die das Koordinaten-Array von jedem Feature in meinem Feature-Layer protokolliert. Seltsamerweise ist das 33. Element des Feature-Layers jedoch ein Array von 3 Arrays - mit den Längen 16, 58 und 246. Wie kann ich auf diese Arrays zugreifen, die eine Ebene tiefer sind - und sie auch auf der Konsole protokollieren?Durchschleifen Arrays innerhalb Arrays

enter image description here

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

Antwort

3

können Sie Rekursion wie unten verwenden:

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

Eine andere Lösung, wenn das Objekt innerhalb eines Arrays nur zu prüfen, ist ein Beispiel für ein Array ist oder nicht.

Wenn es eine Instanz eines anderen Arrays ist, rufen Sie diese Funktion rekursiv auf.

Die Lösung sieht wie folgt aus:

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

Verwandte Themen