суббота, 21 декабря 2013 г.

Функция print_r для Javascript

Функция конвертации массива в текстовую переменную, идентична одноименной в PHP.

Функция:
function print_r(arr, level) {
 var print_text = "";
 if(!level) level = 0;
 var level_padding = "";
 for(var j=0; j<level+1; j++) level_padding += "    ";
 if(typeof(arr) == 'object') {
  for(var item in arr) {
   var value = arr[item];
   if(typeof(value) == 'object') {
    print_text += level_padding + "'" + item + "' :\n";
    print_text += print_r(value,level+1);
   }
   else
    print_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
   }
  }
  else print_text = "===>"+arr+"<===("+typeof(arr)+")";
  return print_text;
}

Запуск:
print_r(array);
array - массив

Однако одной функции будет мало. В отличии от PHP функции - эта не может вывести свое значение сразу в html код. Для этого ей надо немного помочь. Далее несколько примеров, как это можно сделать.

1) Вывести в модальном окне:

alert(print_r(array));

2) Вывести в html:

document.getElementById(id).innerHTML = print_r(array);
id - id тега html когда (div, span, td и т.д.)

3) Вывести в консоли браузера:

console.info(print_r(array));

Иногда массив бывает слишком большим и javascript не справляется с его конвертированием. С этим может помочь отключение перехода на следующий уровень массива. При этом будет конвертирован только первый уровень массива, а последующие выведены как object.
Для этого замените строку:
print_text += print_r(value,level+1);
на:
print_text += value;

На этом все. Очень полезная функция для дебага массивов.

Комментариев нет:

Отправить комментарий