Прокручивание массивов массивов
У меня есть массивы массивов (что-то вроде графа), как итерировать все массивы?
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]]
];
Его просто примерный массив, фактический может содержать любое количество массивов, а затем массивы. Как распечатать все эти цифры? Его похоже на html-объекты DOM
Ответы
Ответ 1
Эта рекурсивная функция должна делать трюк с любым количеством измерений:
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);
Ответ 2
Для двух размерных массивов:
for(var i = 0; i < parentArray.length; i++){
for(var j = 0; j < parentArray[i].length; j++){
console.log(parentArray[i][j]);
}
}
Для массивов с неизвестным числом измерений вы должны использовать рекурсию:
function printArray(arr){
for(var i = 0; i < arr.length; i++){
if(arr[i] instanceof Array){
printArray(arr[i]);
}else{
console.log(arr[i]);
}
}
}
Ответ 3
что вам нужно сделать, это что-то вроде этого
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];
}
}
Итак, это будет как вложенный цикл, тогда там, где innerValue и значение - вы можете делать некоторые операции, надейтесь, что это поможет
Ответ 4
Один из вариантов заключается в использовании рекурсии, которая работает с любым числом дефтов. См. traverse()
, он не тестировался, но должен дать приблизительную идею:
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);
}
Ответ 5
если вы просто хотите напечатать все члены, как насчет этого?
var items = parentArray.toString().split(",");
for(var i=0,j=items.length;i<j;i++)
console.log(items[i]);
Ответ 6
Если у вас есть структура типа DOM, вам нужно рекурсивно перебирать элементы. Что-то вроде этого должно работать:
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);
}
}
}
Ответ 7
Здесь вы должны использовать вложенные для петель. Внешний цикл будет перебирать родительский массив, каждый раз предоставляя вам один из внутренних массивов. Внутренний цикл даст вам элементы в каждом массиве.
Пример:
for(childArray in parentArray){
for(item in childArray){
//do stuff here to each number
}
}