Как напечатать массив объектов в JavaScript?
Я создал массив объектов в JavaScript. Как распечатать массив объектов в окне браузера, аналогично функции print_r
в PHP?
var lineChartData = [{
date: new Date(2009, 10, 2),
value: 5
}, {
date: new Date(2009, 10, 25),
value: 30
}, {
date: new Date(2009, 10, 26),
value: 72,
customBullet: "images/redstar.png"
}];
Ответы
Ответ 1
Просто stringify
свой объект и присвоить его innerHTML элемента вашего выбора.
yourContainer.innerHTML = JSON.stringify(lineChartData);
Если вы хотите что-то красивое, сделайте
yourContainer.innerHTML = JSON.stringify(lineChartData, null, 4);
var lineChartData = [{
date: new Date(2009, 10, 2),
value: 5
}, {
date: new Date(2009, 10, 25),
value: 30
}, {
date: new Date(2009, 10, 26),
value: 72,
customBullet: "images/redstar.png"
}];
document.getElementById("whereToPrint").innerHTML = JSON.stringify(lineChartData, null, 4);
<pre id="whereToPrint"></pre>
Ответ 2
Если вы используете Chrome, вы также можете использовать
console.log( yourArray );
Ответ 3
Вы проверили
console.table(yourArray);
Дополнительная информация здесь: https://developer.mozilla.org/en-US/docs/Web/API/Console/table
Ответ 4
Существует замечательная print_r
реализация для JavaScript в библиотеке php.js.
Заметьте, вы также должны добавить echo
в код.
DEMO: http://jsbin.com/esexiw/1
Ответ 5
Простая функция для предупреждения содержимого объекта или массива.
Вызовите эту функцию с помощью массива или строки или объекта, который он оповещает о содержимом.
Функция
function print_r(printthis, returnoutput) {
var output = '';
if($.isArray(printthis) || typeof(printthis) == 'object') {
for(var i in printthis) {
output += i + ' : ' + print_r(printthis[i], true) + '\n';
}
}else {
output += printthis;
}
if(returnoutput && returnoutput == true) {
return output;
}else {
alert(output);
}
}
Использование
var data = [1, 2, 3, 4];
print_r(data);
Ответ 6
document.getElementById('container').innerHTML = lineChartData[array_index]
Ответ 7
Я использую следующую функцию для отображения показаний в журнале консоли firefox:
//// make printable string for console readout, recursively
var make_printable_object = function(ar_use)
{
//// internal arguments
var in_tab = arguments[1];
var st_return = arguments[2];
//// default vales when applicable
if (!in_tab) in_tab = 0;
if (!st_return) st_return = "";
//// add depth
var st_tab = "";
for (var i=0; i < in_tab; i++) st_tab = st_tab+"-~-~-";
//// traverse given depth and build string
for (var key in ar_use)
{
//// gather return type
var st_returnType = typeof ar_use[key];
//// get current depth display
var st_returnPrime = st_tab+ "["+key+"] ->"+ar_use[key]+"< is {"+st_returnType+"}";
//// remove linefeeds to avoid printout confusion
st_returnPrime = st_returnPrime.replace(/(\r\n|\n|\r)/gm,"");
//// add line feed
st_return = st_return+st_returnPrime+"\n";
//// stop at a depth of 15
if (in_tab>15) return st_return;
//// if current value is an object call this function
if ( (typeof ar_use[key] == "object") & (ar_use[key] != "null") & (ar_use[key] != null) ) st_return = make_printable_object(ar_use[key], in_tab+1, st_return);
}
//// return complete output
return st_return;
};
Пример:
console.log( make_printable_object( some_object ) );
Альтернативно, вы можете просто заменить:
st_return = st_return+st_returnPrime+"\n";
с
st_return = st_return+st_returnPrime+"<br/>";
для печати на странице html.
Ответ 8
Вы можете просто использовать следующий синтаксис, и объект будет полностью показан в консоли:
console.log('object evt: %O', object);
Я использую браузер Chrome, не знаю, подходит ли это для других браузеров.
Ответ 9
Эмм... Почему бы не использовать что-то вроде этого?
function displayArrayObjects(arrayObjects) {
var len = arrayObjects.length, text = "";
for (var i = 0; i < len; i++) {
var myObject = arrayObjects[i];
for (var x in myObject) {
text += ( x + ": " + myObject[x] + " ");
}
text += "<br/>";
}
document.getElementById("message").innerHTML = text;
}
var lineChartData = [{
date: new Date(2009, 10, 2),
value: 5
}, {
date: new Date(2009, 10, 25),
value: 30
}, {
date: new Date(2009, 10, 26),
value: 72,
customBullet: "images/redstar.png"
}];
displayArrayObjects(lineChartData);
<h4 id="message"></h4>
Ответ 10
Я использую свою настраиваемую функцию для печати массива в консоли
this.print = function (data,bpoint=0) {
var c = 0;
for(var k=0; k<data.length; k++){
c++;
console.log(c+' '+data[k]);
if(k!=0 && bpoint === k)break;
}
}
использование: print (array);
или
печать (массив, 50);//50 для печати только
Ответ 11
Не уверен в подэлементах, но все браузеры должны поддерживать это сейчас:
for (val of lineChartData) {
document.write(val);
}
Это может дать вам некоторые идеи для каждого из массива в JavaScript?