Не буду долго расписывать. Функция ниже:
Из интересного:
print_r(arr, space) - параметр arr(выводимый массив), space(отступ текущего массива) - нужен для красивого вывода вложенных массивов.
space = space || "" - проверка на существование аргумента. Если функция будет вызвана с 1 аргументом, то space = undefined. Чтобы не выводить это сообщение, устанавливаем space = "" (если аргумент не задан изначально).
Как использовать:
P.S. Важно понимать, что текущий алгоритм использует рекурсию. Это накладывает определённые ограничения на размер массива (труднодостижимые, но всё же).
Спасибо за внимание.
space = space || "" - проверка на существование аргумента. Если функция будет вызвана с 1 аргументом, то space = undefined. Чтобы не выводить это сообщение, устанавливаем space = "" (если аргумент не задан изначально).
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 29 | function print_r(arr, space) { //Проверка аргумента //Если он есть, то присвоить себя //Иначе присвоить пустую строку space = space || "" ; var result = " " + (arr.length ? "Array" : "Object" ) + " \n " + space + " ( \n" ; var iter = 0; //Такой вид прохода по массиву позволяет вызывать эту функцию любым массивом // (даже с объектом) for ( var i in arr) { iter++; //Проверка на существование следующего элемента массива // (или объекта, неважно) if (arr[i] != null ) { if ((arr[i].length > 0 || typeof (arr[i]) === "object" ) && typeof (arr[i]) !== "string" ) { result += "\t" + space + " [ " + i + " ] =>" + print_r(arr[i], space + "\t" ); } else { result += "\t" + space + " [ " + i + " ] => " + arr[i]; } if (iter < Object.keys(arr).length) { result += "," ; } result += "\n" ; } } return result + space + " )" ; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | var my_array=[ "первый элемент" , "второй" , [ "первый вложенный элемент" , [ "Третий уровень массива" , 2534 ] ], "третий" ]; document.write( "<pre>" +print_r(my_array)+ "</pre>" ); |