如何在 JavaScript 中打印对象数组?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14895287/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to print object array in JavaScript?
提问by uvinod
I have created an object array in JavaScript. How can I print the object array in the browser window, similar to print_rfunction in PHP?
我在 JavaScript 中创建了一个对象数组。如何在浏览器窗口中打印对象数组,类似于print_rPHP 中的函数?
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"
}];
回答by Denys Séguret
Simply stringifyyour object and assign it to the innerHTMLof an element of your choice.
只需stringify您的对象并将其分配给您选择的元素的innerHTML。
yourContainer.innerHTML = JSON.stringify(lineChartData);
If you want something prettier, do
如果你想要更漂亮的东西,做
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>
But if you just do this in order to debug, then you'd better use the consolewith console.log(lineChartData).
但是如果你只是为了调试而这样做,那么你最好使用带有console.log(lineChartData).
回答by charlesdg
Did you check
你检查过了吗
console.table(yourArray);
More infos here: https://developer.mozilla.org/en-US/docs/Web/API/Console/table
更多信息在这里:https: //developer.mozilla.org/en-US/docs/Web/API/Console/table
回答by Toto-Graph
If you are using Chrome, you could also use
如果您使用的是 Chrome,您还可以使用
console.log( yourArray );
回答by VisioN
There is a wonderful print_rimplementation for JavaScript in php.jslibrary.
php.js库中有一个很棒print_r的 JavaScript 实现。
Note, you should also add echosupport in the code.
请注意,您还应该echo在代码中添加支持。
DEMO:http://jsbin.com/esexiw/1
演示:http : //jsbin.com/esexiw/1
回答by Rayiez
Simple function to alert contents of an object or an array .
Call this function with an array or string or an object it alerts the contents.
提醒对象或数组内容的简单函数。
使用数组或字符串或它提醒内容的对象调用此函数。
Function
功能
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);
}
}
Usage
用法
var data = [1, 2, 3, 4];
print_r(data);
回答by bhupesh
document.getElementById('container').innerHTML = lineChartData[array_index]
回答by Shawn
I use the below function to display a readout in firefox console log:
我使用以下函数在 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;
};
Example:
例子:
console.log( make_printable_object( some_object ) );
Alternatively, you can just replace:
或者,您可以替换:
st_return = st_return+st_returnPrime+"\n";
with
和
st_return = st_return+st_returnPrime+"<br/>";
to print out in a html page.
在 html 页面中打印出来。
回答by Torsten Barthel
You can just use the following syntax and the object will be fully shown in the console:
您可以只使用以下语法,对象将完全显示在控制台中:
console.log('object evt: %O', object);
I use Chrome browser don't know if this is adaptable for other browsers.
我用的 Chrome 浏览器不知道这是否适用于其他浏览器。
回答by Gennady G
Emm... Why not to use something like this?
嗯...为什么不使用这样的东西?
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>
result:
结果:
date: Mon Nov 02 2009 00:00:00 GMT+0200 (FLE Standard Time) value: 5
date: Wed Nov 25 2009 00:00:00 GMT+0200 (FLE Standard Time) value: 30
date: Thu Nov 26 2009 00:00:00 GMT+0200 (FLE Standard Time) value: 72 customBullet: images/redstar.png
回答by user889030
i use my custom function to print array in console
我使用我的自定义函数在控制台中打印数组
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;
}
}
usage : print(array);
or
print(array,50); // 50 value to print only
用法:打印(数组);
或打印(数组,50);// 仅打印 50 个值

