Comment imprimer un tableau d’objects en JavaScript?

J’ai créé un tableau d’objects en JavaScript. Comment puis-je imprimer le tableau d’objects 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" }]; 

Utilisez simplement

 yourContainer.innerHTML = JSON.ssortingngify(lineChartData); 

Si tu veux quelque chose de plus joli, fais

 yourContainer.innerHTML = JSON.ssortingngify(lineChartData, null, 4); 

Manifestation

Mais si vous le faites simplement pour déboguer, vous devriez alors 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 excellente implémentation de print_r pour JavaScript dans la bibliothèque php.js.

Notez que vous devez également append le support d’ echo dans le code.

DEMO: http://jsbin.com/esexiw/1

Fonction simple pour alerter le contenu d’un object ou d’un tableau.
Appelez cette fonction avec un tableau ou une chaîne ou un object qui alerte le contenu.

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] 

J’utilise la fonction ci-dessous pour afficher une lecture dans le journal de la console firefox:

 //// make printable ssortingng 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+"
";

pour imprimer dans une page HTML.

Vous pouvez simplement utiliser la syntaxe suivante et l’object sera entièrement affiché dans la console:

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

J’utilise le navigateur Chrome ne sais pas si cela est adaptable pour d’autres navigateurs.

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 += "
"; } 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);
 

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 

utilisation: print (array);
ou imprimer (tableau, 50); // 50 valeur à imprimer uniquement