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.
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