J'ai un tableau de tableaux (quelque chose comme un graphique), Comment itérer tous les tableaux?
var parentArray = [
[[1,2,3],[4,5,6],[7,8,9]],
[[10,11,12],[13,14,15],[16,17,18]],
[[19,20,21],[22,23,24],[26,27,28]]
];
C'est juste un exemple de tableau, réel peut contenir un nombre quelconque de tableaux, puis de tableaux. Comment imprimer tous ces chiffres? C'est similaire aux objets HTML DOM
Cette fonction récursive devrait faire l'affaire avec n'importe quel nombre de dimensions:
var printArray = function(arr) {
if ( typeof(arr) == "object") {
for (var i = 0; i < arr.length; i++) {
printArray(arr[i]);
}
}
else document.write(arr);
}
printArray(parentArray);
Pour les tableaux à 2 dimensions:
for(var i = 0; i < parentArray.length; i++){
for(var j = 0; j < parentArray[i].length; j++){
console.log(parentArray[i][j]);
}
}
Pour les tableaux avec un nombre inconnu de dimensions, vous devez utiliser la récursivité:
function printArray(arr){
for(var i = 0; i < arr.length; i++){
if(arr[i] instanceof Array){
printArray(arr[i]);
}else{
console.log(arr[i]);
}
}
}
ce que vous devez faire est quelque chose comme ça
var parentArray = [
[[1,2,3],[4,5,6],[7,8,9]],
[[10,11,12],[13,14,15],[16,17,18]],
[[19,20,21],[22,23,24],[26,27,28]]
];
for(int i = 0; i < parentArray.length;i++){
var value = parent[i];
for(int j = 0; j < parent[i].length; j++){
var innerValue = parent[i][j];
}
}
Donc, cela ressemblera à une boucle imbriquée, puis là où innerValue et la valeur est que vous pouvez faire certaines opérations, espérons que cela aide
si vous voulez seulement imprimer tous les membres, que dites-vous de cela?
var items = parentArray.toString().split(",");
for(var i=0,j=items.length;i<j;i++)
console.log(items[i]);
Une option serait d'utiliser la récursivité qui fonctionne avec un nombre quelconque de profondeurs . Voir traverse()
, ce n'est pas testé mais devrait donner une idée approximative:
String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length)
str = padString + str;
return str;
}
var level = 0;
function traverse(obj) {
if (obj instanceof Array) { level++; for(var i in obj) traverse(obj[i]); level--; }
else console.log(''.lpad('-', level) + obj);
}
Si vous avez une structure de type DOM, vous devez effectuer une itération récursive à travers les éléments. Quelque chose comme ça devrait marcher:
function printArray(array) {
for (var i = 0; i < array.length; i++) {
var v = array[i];
if (v instanceof Array) {
printArray(v);
} else {
console.log(v);
}
}
}
Vous utiliseriez ici des boucles imbriquées. La boucle externe itérerait le tableau parent, vous donnant l’un des tableaux internes chaque fois La boucle interne vous donnerait les éléments de chaque tableau. Exemple:
for(childArray in parentArray){
for(item in childArray){
//do stuff here to each number
}
}