console.log, показывающий содержимое объекта массива - PullRequest
40 голосов
/ 27 октября 2011

Я попытался использовать console.log, чтобы увидеть содержимое моего массива, который содержит несколько объектов. Однако я получаю сообщение об ошибке, говоря, что console.log не является объектом и т. Д. Я использую jquery 1.6.2, и мой массив выглядит так:

filters = {dvals:[{'brand':'1', 'count':'1'},
                  {'brand':'2', 'count':'2'}, 
                  {'brand':'3', 'count':'3'}]}

console.log(filters);

Что я хочу сделать, это записать содержимое array(filters) в окно оповещения (как я и думал console.log) в формате фильтров. Как мне это сделать?

Ответы [ 7 ]

50 голосов
/ 13 мая 2012

есть два возможных простых решения для выгрузки массива в виде строки. В зависимости от используемой среды:

… в современных браузерах используйте JSON:

JSON.stringify(filters);
// returns this
"{"dvals":[{"brand":"1","count":"1"},{"brand":"2","count":"2"},{"brand":"3","count":"3"}]}"

… с чем-то вроде node.js вы можете использовать console.info ()

console.info(filters);
// will output:
{ dvals: 
[ { brand: '1', count: '1' },
  { brand: '2', count: '2' },
  { brand: '3', count: '3' } ] }

Редактировать:

JSON.stringify поставляется с еще двумя необязательными параметрами. Третий параметр «пробелы» включает красивую печать:

JSON.stringify(
                obj,      // the object to stringify
                replacer, // a function or array transforming the result
                spaces    // prettyprint indentation spaces
              )

пример:

JSON.stringify(filters, null, "  ");
// returns this
"{
 "dvals": [
  {
   "brand": "1",
   "count": "1"
  },
  {
   "brand": "2",
   "count": "2"
  },
  {
   "brand": "3",
   "count": "3"
  }
 ]
}"
7 голосов
/ 27 октября 2011

console.log не создает никаких сообщений. Я не думаю, что он доступен в любой версии IE (или Firefox) без добавления firebug или какого-либо эквивалента.

Однако он доступен в Safari и Chrome. Поскольку вы упомянули Chrome, я буду использовать это для моего примера.

Вам нужно будет открыть свое окно и его аналог в окне разработчика. Вы можете сделать это, щелкнув правой кнопкой мыши по любому элементу на странице и выбрав «Проверить элемент». Ваше окно будет разделено на две части, часть для разработчиков - внизу. в разделе между двумя частями находится панель с кнопками, а самая правая кнопка помечена как «консоль». Вам нужно будет нажать на это, чтобы перейти на вкладку консоли. К сожалению, я не знаю, как добраться туда с помощью клавиатуры в Chrome. (В Safari на Mac OS X это команда + shift + I)

Оказавшись там, вы сможете взаимодействовать с любой загруженной страницей сверху через javascript с этой консоли, и любые сообщения, которые вы console.log будут отображать там.

4 голосов
/ 10 марта 2016

Просто напечатать объект на консоль в Javascript. Просто используйте следующий синтаксис:

console.log( object );

или

console.log('object: %O', object);

Ниже приведен относительно неизвестный метод, который выводит объект или массив на консоль в виде таблицы:

console.table (object);

Я думаю, важно сказать, что такого рода оператор записи работает только в среде браузера. Я использовал это с Google Chrome. Вы можете просмотреть результаты ваших вызовов console.log в консоли разработчика: откройте его, щелкнув правой кнопкой мыши по любому элементу на веб-странице и выбрав «Инспектировать». Выберите вкладку «Консоль».

4 голосов
/ 27 октября 2011

Объект console доступен в Internet Explorer 8 или новее, но только в том случае, если вы откроете окно инструментов разработчика, нажав F12 или через меню.

Он остается доступным, даже если вы снова закроете окно Инструменты разработчика, пока не закроете свой IE.

У Chorme и Opera всегда есть доступные console, по крайней мере, в текущих версиях.Firefox имеет console при использовании Firebug, но он также может предоставлять его и без Firebug.

В любом случае это безопасный способ сделать использование вывода console необязательным.Вот несколько примеров того, как это сделать:

if (console) {
    console.log('Hello World!');
}

if (console) console.debug('value of someVar: ' + someVar);
1 голос
/ 04 июля 2013

Я настоятельно рекомендую этот фрагмент для гарантии того, что случайно оставленные фрагменты кода не потерпят неудачу в клиентских браузерах:

/* neutralize absence of firebug */
if ((typeof console) !== 'object' || (typeof console.info) !== 'function') {
    window.console = {};
    window.console.info = window.console.log = window.console.warn = function(msg) {};
    window.console.trace = window.console.error = window.console.assert = function(msg) {};
}

, вместо определения пустой функции, этот фрагмент также является хорошей отправной точкой для прокрутки вашей собственной консоли суррогата, если это необходимо, то есть выгрузки этой информации в контейнер .debug, отображения предупреждений (может быть много) или чего-то подобного ...

Если вы используете firefox + firebug, console.dir() лучше всего подходит для вывода вывода массива, см. Здесь .

1 голос
/ 27 октября 2011

Json означает нотацию объектов JavaScript, на самом деле все json - это объекты javascript, поэтому ваш массив уже находится в форме json. Чтобы записать это в div, вы можете сделать несколько вещей, одной из самых простых, на мой взгляд, будет:

 objectDiv.innerHTML = filter;

где objectDiv - это div, который вы хотите выбрать из DOM с помощью jquery. Если вы хотите вывести части массива из списка, вы можете получить к ним доступ, поскольку это объект javascript, например:

 objectDiv.innerHTML = filter.dvals.valueToDisplay; //brand or count depending.

edit: все, что вы хотите быть строкой, но не в настоящее время (что редко встречается в javascript, рассматривает почти все как строку), просто используйте встроенную функцию toString(). Строка выше, если вам нужно, будет filter.dvals.valueToDisplay.toString();

второе редактирование, чтобы уточнить: этот ответ является ответом на комментарии ОП, а не полностью на его первоначальный вопрос.

1 голос
/ 27 октября 2011

Похоже, Firebug или любой другой отладчик, который вы используете, не инициализируется должным образом. Вы уверены, что Firebug полностью инициализируется при попытке доступа к console.log () - методу? Проверьте вкладку «Консоль» (если она активирована).

Другая возможность может состоять в том, что вы перезаписываете консольный объект в любом месте кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...