Подтвердить что ты не робот

Console.log, показывающий содержимое объекта массива

Я попытался с помощью 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) в формате фильтров. Как я могу это сделать?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

... с современными браузерами используйте 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"
  }
 ]
}"

Ответ 3

Объект 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);

Ответ 4

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

console.log( object );

или же

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

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

console.table (объект);

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

Ответ 5

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

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

Ответ 6

Json означает JavaScript Object Notation. Все 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();

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

Ответ 7

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

/* 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() лучше всего подходит для вывода массива, см. здесь.