J'ai créé un tableau d'objets en JavaScript. Comment puis-je imprimer le tableau d'objets dans la fenêtre du navigateur, similaire à la fonction print_r
en 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"
}];
Simplement stringify
votre objet et assignez-le au innerHTML d’un élément de votre choix.
yourContainer.innerHTML = JSON.stringify(lineChartData);
Si vous voulez quelque chose de plus joli, faites
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>
Mais si vous ne faites que cela pour déboguer, vous feriez mieux de utiliser la console avec console.log(lineChartData)
.
Si vous utilisez Chrome, vous pouvez également utiliser
console.log( yourArray );
Avez-vous vérifié
console.table(yourArray);
Plus d'infos ici: https://developer.mozilla.org/en-US/docs/Web/API/Console/table
Il existe une merveilleuse implémentation print_r
pour JavaScript dans la bibliothèque php.js.
Notez que vous devez également ajouter echo
support dans le code.
DEMO: _ http://jsbin.com/esexiw/1
Fonction simple pour alerter le contenu d'un objet ou d'un tableau.
Appelez cette fonction avec un tableau, une chaîne ou un objet pour en alerter le contenu.
Une fonction
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);
document.getElementById('container').innerHTML = lineChartData[array_index]
Emm ... Pourquoi ne pas utiliser quelque chose comme ça?
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>
résultat:
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
J'utilise la fonction ci-dessous pour afficher une lecture dans le journal de la console 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;
};
Exemple:
console.log( make_printable_object( some_object ) );
Alternativement , vous pouvez simplement remplacer:
st_return = st_return+st_returnPrime+"\n";
avec
st_return = st_return+st_returnPrime+"<br/>";
imprimer sur une page HTML.
Vous pouvez simplement utiliser la syntaxe suivante et l'objet sera entièrement affiché dans la console:
console.log('object evt: %O', object);
J'utilise le navigateur Chrome, mais je ne sais pas s'il est adaptable à d'autres navigateurs.
j'utilise ma fonction personnalisée pour imprimer un tableau dans la 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;
}
}
utilisation: print (array);
ou print (tableau, 50); // 50 valeur à imprimer uniquement