¿Cómo puedo ver la estructura de la matriz en JavaScript con alert ()?

108

¿Cómo puedo ver la estructura de una matriz en JavaScript usando alert()?

pppttt
fuente
14
Esto no responde a su pregunta, pero debe instalar FireBug y usarlo console.log; es excelente para la introspección de objetos JavaScript.
Deniz Dogan
¿Qué quieres decir con estructura de matriz? Puede recorrer la matriz y alertar cada valor.
Tim Schmelter
@ Deniz Dogan por console.log ¿te refieres a shift + R y la opción "consola"?
pppttt
1
@Deniz - console.debugrealmente funcionaría mejor.
Matt Ball
@Tim por estructura me refiero al índice y el valor, la vista "sin procesar" de la matriz como en PHP printf
pppttt

Respuestas:

122

Un enfoque muy básico es alert(arrayObj.join('\n'))que mostrará cada elemento de la matriz en una fila.

Humberto
fuente
5
Esto funciona muy bien. Reemplace "arrayObj" con el nombre de su matriz. Entonces, si su matriz se llama myArray, esta es su línea de código:alert(myArray.join('\n'));
Tony Brasunas
54

EDITAR: Firefox y Google Chrome ahora tienen un JSONobjeto incorporado , por lo que puede simplemente decir alert(JSON.stringify(myArray))sin necesidad de usar un complemento jQuery. Esto no es parte de la especificación del lenguaje Javascript, por lo que no debe confiar en que el JSONobjeto esté presente en todos los navegadores, pero para fines de depuración es increíblemente útil.

Tiendo a usar el complemento jQuery-json de la siguiente manera:

alert( $.toJSON(myArray) );

Esto imprime la matriz en un formato como

[5, 6, 7, 11]

Sin embargo, para depurar su código Javascript, recomiendo encarecidamente Firebug. De hecho, viene con una consola Javascript, por lo que puede escribir el código Javascript para cualquier página y ver los resultados. Cosas como matrices ya están impresas en la forma legible por humanos utilizada anteriormente.

Firebug también tiene un depurador, así como pantallas para ayudarlo a ver y depurar su HTML y CSS.

Eli Courtwright
fuente
32

pase su matriz js a la función a continuación y hará lo mismo que la función 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
fuente
esta función hace que Firefox se bloquee al analizar una matriz ordenable de IU.
Shahrokhian
8

Recomiendo usar toString ().

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

dk123
fuente
3

Si esto es con fines de depuración, le aconsejo que utilice un depurador de JavaScript como Firebug . Le permitirá ver todo el contenido de las matrices y mucho más, incluida la modificación de las entradas de la matriz y el código paso a paso.

Justin Ethier
fuente
2

Si lo que quieres es mostrar con una alerta () el contenido de un arreglo de objetos, te recomiendo definir en el objeto el método toString () así con una simple alerta (MyArray); el contenido completo de la matriz se mostrará en la alerta.

Aquí hay un ejemplo:

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

Entonces, si tiene una matriz de puntos:

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

Puede imprimir simplemente llamando a:

alert(MyArray);

¡Espero que esto ayude!

tomasofen
fuente
1

Puede escribir una función que convierta y formatee esta matriz como cadena. Aún mejor: use FireBug para depurar en lugar de alertas.

Darin Dimitrov
fuente
1

Mejor use Firebug (consola de Chrome, etc.) y use console.dir ()

yAnTar
fuente
1

Por motivos de legibilidad, puede utilizar:

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

Más sobre JSON.stringify () .

Ejemplo:

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
  }
} 
*/
Víctor S.
fuente
-5
alert($("#form_id").serialize());
Mauricio
fuente
3
La pregunta está etiquetada javascriptque dice "A menos que también se incluya una etiqueta para un marco / biblioteca, se espera una respuesta de JavaScript pura". Incluso si ese no fuera el caso ... la pregunta es sobre una matriz, no sobre un formulario HTML.
Quentin