Como posso ver a estrutura do array em JavaScript com alert ()?

108

Como posso ver a estrutura de uma matriz em JavaScript usando alert()?

pppttt
fonte
14
Isso não responde à sua pergunta, mas você deve instalar o FireBug e usar console.log- é ótimo para introspecção de objetos JavaScript.
Deniz Dogan
O que você quer dizer com estrutura de array? Você pode percorrer a matriz e alertar cada valor.
Tim Schmelter
@Deniz Dogan por console.log você quer dizer shift + R e opção "console"?
pppttt
1
@Deniz - console.debugfuncionaria melhor.
Matt Ball
@Tim por estrutura, quero dizer o índice e o valor, a visão "bruta" do array como em PHP printf
pppttt

Respostas:

122

Uma abordagem muito básica é alert(arrayObj.join('\n')), que exibirá cada elemento da matriz em uma linha.

Humberto
fonte
5
Isso funciona muito bem. Substitua "arrayObj" pelo nome do seu array. Portanto, se seu array se chama myArray, esta é sua linha de código:alert(myArray.join('\n'));
Tony Brasunas,
54

EDITAR: Firefox e Google Chrome agora têm um JSONobjeto embutido , então você pode apenas dizer alert(JSON.stringify(myArray))sem precisar usar um plugin jQuery. Isso não faz parte das especificações da linguagem Javascript, portanto, você não deve confiar que o JSONobjeto está presente em todos os navegadores, mas para fins de depuração, é incrivelmente útil.

Costumo usar o plugin jQuery-json da seguinte maneira:

alert( $.toJSON(myArray) );

Isso imprime a matriz em um formato como

[5, 6, 7, 11]

No entanto, para depurar seu código Javascript, eu recomendo fortemente o Firebug. Ele na verdade vem com um console Javascript, para que você possa digitar o código Javascript para qualquer página e ver os resultados. Coisas como matrizes já são impressas na forma legível usada acima.

O Firebug também possui um depurador, bem como telas para ajudá-lo a visualizar e depurar seu HTML e CSS.

Eli Courtwright
fonte
32

passe seu array js para a função abaixo e ele fará o mesmo que a função 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
fonte
esta função faz o firefox travar ao analisar uma matriz classificável da IU.
Shahrokhian
16

Você pode usar alert(arrayObj.toSource());

Piseth Sok
fonte
1
Funciona no Firefox, mas não no Safari ou MSIE, consulte stackoverflow.com/questions/1101584/…
Julien Kronegg
8

Eu recomendo usar toString ().

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

dk123
fonte
3

Se for para fins de depuração, recomendo que você use um depurador de JavaScript como o Firebug . Ele permitirá que você visualize todo o conteúdo dos arrays e muito mais, incluindo a modificação das entradas do array e a passagem pelo código.

Justin Ethier
fonte
2

Se o que você deseja é mostrar com um alert () o conteúdo de um array de objetos, recomendo que você defina no objeto o método toString () assim com um alerta simples (MyArray); o conteúdo completo da matriz será mostrado no alerta.

Aqui está um exemplo:

//-------------------------------------------------------------------
// 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 + ") ";
    };
 }

Então, se você tiver uma matriz de pontos:

var MyArray = [];
MyArray.push ( new Point(5,6) );
MyArray.push ( new Point(7,9) );

Você pode imprimir simplesmente ligando:

alert(MyArray);

Espero que isto ajude!

Tomasofen
fonte
1

Você pode escrever uma função que irá converter e formatar este array como string. Ainda melhor: use FireBug para depuração em vez de alertas.

Darin Dimitrov
fonte
1

Melhor usar Firebug (console do Chrome etc) e usar console.dir ()

yAnTar
fonte
1

Para fins de legibilidade, você pode usar:

alert(JSON.stringify(someArrayOrObj, '', 2));

Mais sobre JSON.stringify () .

Exemplo:

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.
fonte
-5
alert($("#form_id").serialize());
Mauricio
fonte
3
A pergunta é marcada javascriptque diz "A menos que uma tag para uma estrutura / biblioteca também seja incluída, uma resposta JavaScript puro é esperada". Mesmo que não fosse o caso ... a questão é sobre um array, não um formulário HTML.
Quentin