Программирование > 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]

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии