Wie kann ich die Struktur eines Arrays in JavaScript mit anzeigen alert()?
console.debugwürde eigentlich besser funktionieren.
Wie kann ich die Struktur eines Arrays in JavaScript mit anzeigen alert()?
console.debugwürde eigentlich besser funktionieren.
Antworten:
Ein sehr grundlegender Ansatz besteht darin alert(arrayObj.join('\n')), jedes Array-Element in einer Reihe anzuzeigen.
alert(myArray.join('\n'));
BEARBEITEN: Firefox und Google Chrome haben jetzt ein integriertes JSONObjekt, sodass Sie einfach sagen können, alert(JSON.stringify(myArray))ohne ein jQuery-Plugin verwenden zu müssen. Dies ist nicht Teil der Javascript-Sprachspezifikation, daher sollten Sie sich nicht darauf verlassen, dass das JSONObjekt in allen Browsern vorhanden ist, aber für Debugging-Zwecke ist es unglaublich nützlich.
Ich neige dazu, das jQuery-json-Plugin wie folgt zu verwenden:
alert( $.toJSON(myArray) );
Dies druckt das Array in einem Format wie
[5, 6, 7, 11]
Zum Debuggen Ihres Javascript-Codes empfehle ich jedoch dringend Firebug. Es wird tatsächlich mit einer Javascript-Konsole geliefert, sodass Sie Javascript-Code für jede Seite eingeben und die Ergebnisse anzeigen können. Dinge wie Arrays werden bereits in der oben verwendeten lesbaren Form gedruckt.
Firebug verfügt außerdem über einen Debugger sowie Bildschirme, mit denen Sie HTML und CSS anzeigen und debuggen können.
Übergeben Sie Ihr js-Array an die unten stehende Funktion, und es funktioniert genauso wie die Funktion 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;
}
Sie können verwenden alert(arrayObj.toSource());
Wenn dies zu Debugging-Zwecken dient, würde ich Ihnen empfehlen, einen JavaScript-Debugger wie Firebug zu verwenden . Damit können Sie den gesamten Inhalt von Arrays und vieles mehr anzeigen, einschließlich des Änderns von Array-Einträgen und des Durchlaufens von Code.
Wenn Sie mit einer Warnung () den Inhalt eines Arrays von Objekten anzeigen möchten, empfehle ich Ihnen, die Methode toString () im Objekt zu definieren, also mit einer einfachen Warnung (MyArray); Der vollständige Inhalt des Arrays wird in der Warnung angezeigt.
Hier ist ein Beispiel:
//-------------------------------------------------------------------
// 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 + ") ";
};
}
Wenn Sie dann eine Reihe von Punkten haben:
var MyArray = [];
MyArray.push ( new Point(5,6) );
MyArray.push ( new Point(7,9) );
Sie können drucken, indem Sie einfach anrufen:
alert(MyArray);
Hoffe das hilft!
Sie können eine Funktion schreiben, die dieses Array als Zeichenfolge konvertiert und formatiert. Noch besser: Verwenden Sie FireBug zum Debuggen anstelle von Warnungen.
Aus Gründen der Lesbarkeit können Sie Folgendes verwenden:
alert(JSON.stringify(someArrayOrObj, '', 2));
Weitere Informationen zu JSON.stringify () .
Beispiel:
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());
javascripteinem Tag versehen, der besagt: "Wenn kein Tag für ein Framework / eine Bibliothek enthalten ist, wird eine reine JavaScript-Antwort erwartet." Auch wenn dies nicht der Fall war ... die Frage bezieht sich auf ein Array, nicht auf ein HTML-Formular.
console.log- es eignet sich hervorragend zur Selbstbeobachtung von JavaScript-Objekten.