Программирование > JavaScript & JScript
Переборка многомерного массива
(1/1)
madMike:
Добрый день, такая проблема:
Есть многомерный массив, причем число вложений неограничено. Нужно составить цикл, который бы перебрал все его элементы :)
Если хорошо подумать, может быть и сделаю сам, просто может кто уже сталкивался с подобной задачей и может просто выложить код...
CGVictor:
madMike
Рекурсивный вызов функции с массивом в параметр.
Однако больше 16 уровней вряд ли тебе браузер даст перебрать.
andymc:
Вот экспериментальная версия нужной функции (привет от print_r() из PHP)
--- Код: ---
function print_r(arr){
while(val=arr.shift()){
if (val.constructor==Array){
//document.write("Печатаем массив
")
print_r(val)
} else {
// здесь со значением val можно делать операции
document.write(val+"
")
}
}
}
arr=new Array();
arr[0]=new Array(11,22,33,44,55);
arr[1]=new Array(1,2,3,4,5);
arr[0][1]=new Array(221,222,223,224,225);
// вызов
print_r(arr);
--- Конец кода ---
Пробовал for с arr, но не вышло.
Получилось только с while и shift().
CGVictor:
andymc
Да, всё верно.
[off]Однако там совершенно непонятное поведение при глубокой вложенности. Mozilla предупреждает ("хотите ли продолжить выполнение", хотя и не всегда), IE либо тоже говорит ("выполнение может занять продолжительное время") либо вылетает с "out of memory at line X".[/off]
Навигация
Перейти к полной версии