Come posso visualizzare la struttura dell'array in JavaScript con alert ()?


108

Come posso visualizzare la struttura di un array in JavaScript utilizzando alert()?


14
Questo non risponde alla tua domanda, ma dovresti installare FireBug e usarlo console.log: è ottimo per l'introspezione degli oggetti JavaScript.
Deniz Dogan

Cosa intendi con struttura ad array? È possibile scorrere la matrice e avvisare ogni valore.
Tim Schmelter

@ Deniz Dogan di console.log intendi shift + R e opzione "console"?
pppttt

1
@ Deniz - console.debugfunzionerebbe effettivamente meglio.
Matt Ball

@Tim per struttura intendo l'indice e il valore, la vista "grezza" dell'array come in PHP printf
pppttt

Risposte:


122

Un approccio molto semplice è alert(arrayObj.join('\n'))che mostrerà ogni elemento dell'array in una riga.


5
Funziona alla grande. Sostituisci "arrayObj" con il nome del tuo array. Quindi, se il tuo array si chiama myArray, questa è la tua riga di codice:alert(myArray.join('\n'));
Tony Brasunas

54

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.


32

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;
}

questa funzione fa sì che Firefox si blocchi con l'analisi di un array ordinabile dell'interfaccia utente.
Shahrokhian


8

Consiglierei di usare toString ().

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


3

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.


2

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!


1

È possibile scrivere una funzione che convertirà e formatterà questo array come stringa. Ancora meglio: usa FireBug per il debug invece degli avvisi.


1

Usa meglio Firebug (console Chrome, ecc.) E usa console.dir ()


1

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
  }
} 
*/

-5
alert($("#form_id").serialize());

3
La domanda è taggata 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.
Quentin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.