Come posso visualizzare la struttura di un array in JavaScript utilizzando alert()?
console.debugfunzionerebbe effettivamente meglio.
Come posso visualizzare la struttura di un array in JavaScript utilizzando alert()?
console.debugfunzionerebbe effettivamente meglio.
Risposte:
Un approccio molto semplice è alert(arrayObj.join('\n'))che mostrerà ogni elemento dell'array in una riga.
alert(myArray.join('\n'));
MODIFICA: Firefox e Google Chrome ora hanno un JSONoggetto integrato , quindi puoi semplicemente dirlo alert(JSON.stringify(myArray))senza bisogno di utilizzare un plug-in jQuery. Questo non fa parte delle specifiche del linguaggio Javascript, quindi non dovresti fare affidamento sul fatto che l' JSONoggetto sia presente in tutti i browser, ma per scopi di debug è incredibilmente utile.
Tendo a usare il plugin jQuery-json come segue:
alert( $.toJSON(myArray) );
Questo stampa l'array in un formato come
[5, 6, 7, 11]
Tuttavia, per il debug del codice Javascript, consiglio vivamente Firebug.In realtà viene fornito con una console Javascript, quindi puoi digitare il codice Javascript per qualsiasi pagina e vedere i risultati. Cose come le matrici sono già stampate nella forma leggibile usata sopra.
Firebug ha anche un debugger e schermate per aiutarti a visualizzare ed eseguire il debug di HTML e CSS.
passa il tuo array js alla funzione sottostante e farà lo stesso della funzione php print_r ()
alert(print_r(your array)); //call it like this
function print_r(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += print_r(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
Puoi usare alert(arrayObj.toSource());
Se questo è per scopi di debug, ti consiglio di utilizzare un debugger JavaScript come Firebug . Ti consentirà di visualizzare l'intero contenuto degli array e molto altro, inclusa la modifica delle voci degli array e lo scorrimento del codice.
Se quello che vuoi è mostrare con un alert () il contenuto di un array di oggetti, ti consiglio di definire nell'oggetto il metodo toString () quindi con un semplice alert (MyArray); l'intero contenuto dell'array verrà mostrato nell'avviso.
Ecco un esempio:
//-------------------------------------------------------------------
// Defininf the Point object
function Point(CoordenadaX, CoordenadaY) {
// Sets the point coordinates depending on the parameters defined
switch (arguments.length) {
case 0:
this.x = null;
this.y = null;
break;
case 1:
this.x = CoordenadaX;
this.y = null;
break;
case 2:
this.x = CoordenadaX;
this.y = CoordenadaY;
break;
}
// This adds the toString Method to the point object so the
// point can be printed using alert();
this.toString = function() {
return " (" + this.x + "," + this.y + ") ";
};
}
Quindi, se hai una serie di punti:
var MyArray = [];
MyArray.push ( new Point(5,6) );
MyArray.push ( new Point(7,9) );
Puoi stampare semplicemente chiamando:
alert(MyArray);
Spero che questo ti aiuti!
È possibile scrivere una funzione che convertirà e formatterà questo array come stringa. Ancora meglio: usa FireBug per il debug invece degli avvisi.
Per motivi di leggibilità è possibile utilizzare:
alert(JSON.stringify(someArrayOrObj, '', 2));
Ulteriori informazioni su JSON.stringify () .
Esempio:
let user = {
name: "John",
age: 30,
roles: {
isAdmin: false,
isEditor: true
}
};
alert(JSON.stringify(user, "", 2));
/* Result:
{
"name": "John",
"age": 30,
"roles": {
"isAdmin": false,
"isEditor": true
}
}
*/
alert($("#form_id").serialize());
javascriptche dice "A meno che non sia incluso anche un tag per un framework / libreria, è prevista una risposta JavaScript pura". Anche se non fosse così ... la domanda è chiedere informazioni su un array, non su un modulo HTML.
console.log: è ottimo per l'introspezione degli oggetti JavaScript.