Wie kann ich mit alert () die Array-Struktur in JavaScript anzeigen?

108

Wie kann ich die Struktur eines Arrays in JavaScript mit anzeigen alert()?

pppttt
quelle
14
Dies beantwortet Ihre Frage nicht, aber Sie sollten FireBug installieren und verwenden console.log- es eignet sich hervorragend zur Selbstbeobachtung von JavaScript-Objekten.
Deniz Dogan
Was meinst du mit Array-Struktur? Sie können das Array durchlaufen und jeden Wert alarmieren.
Tim Schmelter
@ Deniz Dogan von console.log meinst du Shift + R und Option "console"?
pppttt
1
@ Deniz - console.debugwürde eigentlich besser funktionieren.
Matt Ball
@ Tim mit Struktur Ich meine den Index und den Wert, die "rohe" Ansicht des Arrays wie in PHP printf
pppttt

Antworten:

122

Ein sehr grundlegender Ansatz besteht darin alert(arrayObj.join('\n')), jedes Array-Element in einer Reihe anzuzeigen.

Humberto
quelle
5
Das funktioniert super. Ersetzen Sie "arrayObj" durch den Namen Ihres Arrays. Wenn Ihr Array also myArray heißt, ist dies Ihre Codezeile:alert(myArray.join('\n'));
Tony Brasunas
54

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.

Eli Courtwright
quelle
32

Ü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;
}
Fawad Ghafoor
quelle
Diese Funktion führt dazu, dass Firefox beim Parsen eines sortierbaren UI-Arrays abstürzt.
Shahrokhian
16

Sie können verwenden alert(arrayObj.toSource());

Piseth Sok
quelle
1
Funktioniert unter Firefox, aber nicht unter Safari oder MSIE, siehe stackoverflow.com/questions/1101584/…
Julien Kronegg
8

Ich würde empfehlen, toString () zu verwenden.

Ex. alert(array.toString()), oderconsole.log(array.toString())

dk123
quelle
3

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.

Justin Ethier
quelle
2

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!

tomasofen
quelle
1

Sie können eine Funktion schreiben, die dieses Array als Zeichenfolge konvertiert und formatiert. Noch besser: Verwenden Sie FireBug zum Debuggen anstelle von Warnungen.

Darin Dimitrov
quelle
1

Verwenden Sie besser Firebug (Chrome-Konsole usw.) und console.dir ()

yAnTar
quelle
1

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
  }
} 
*/
Victor S.
quelle
-5
alert($("#form_id").serialize());
Mauricio
quelle
3
Die Frage ist mit 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.
Quentin