Comment afficher la structure du tableau en JavaScript avec alert ()?


108

Comment puis-je afficher la structure d'un tableau en JavaScript en utilisant alert()?


14
Cela ne répond pas à votre question, mais vous devez installer FireBug et l'utiliser console.log- c'est idéal pour l'introspection d'objets JavaScript.
Deniz Dogan

Que voulez-vous dire par structure de tableau? Vous pouvez parcourir le tableau et alerter chaque valeur.
Tim Schmelter

@ Deniz Dogan par console.log voulez-vous dire shift + R et option "console"?
pppttt

1
@Deniz - console.debugfonctionnerait mieux.
Matt Ball

@Tim par structure, je veux dire l'indice et la valeur, la vue "brute" du tableau comme en PHP printf
pppttt

Réponses:


122

Une approche très basique est alert(arrayObj.join('\n')), qui affichera chaque élément du tableau dans une ligne.


5
Cela fonctionne très bien. Remplacez "arrayObj" par le nom de votre tableau. Donc, si votre tableau s'appelle myArray, voici votre ligne de code:alert(myArray.join('\n'));
Tony Brasunas

54

EDIT: Firefox et Google Chrome ont maintenant un JSONobjet intégré , donc vous pouvez simplement dire alert(JSON.stringify(myArray))sans avoir besoin d'utiliser un plugin jQuery. Cela ne fait pas partie des spécifications du langage Javascript, vous ne devriez donc pas vous fier à laJSON présence de objet dans tous les navigateurs, mais à des fins de débogage, c'est incroyablement utile.

J'ai tendance à utiliser le plugin jQuery-json comme suit:

alert( $.toJSON(myArray) );

Cela imprime le tableau dans un format comme

[5, 6, 7, 11]

Cependant, pour déboguer votre code Javascript, je recommande vivement Firebug Il est en fait livré avec une console Javascript, vous pouvez donc taper du code Javascript pour n'importe quelle page et voir les résultats. Des éléments tels que les tableaux sont déjà imprimés sous la forme lisible par l'homme utilisée ci-dessus.

Firebug dispose également d'un débogueur, ainsi que d'écrans pour vous aider à afficher et déboguer votre HTML et CSS.


32

passez votre tableau js à la fonction ci-dessous et il fera la même chose que la fonction 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;
}

cette fonction fait planter Firefox avec l'analyse d'un tableau triable de l'interface utilisateur.
Shahrokhian


8

Je recommanderais d'utiliser toString ().

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


3

Si c'est à des fins de débogage, je vous conseillerais d'utiliser un débogueur JavaScript tel que Firebug . Il vous permettra de voir tout le contenu des tableaux et bien plus encore, y compris la modification des entrées de tableau et le passage du code.


2

Si vous souhaitez afficher avec une alerte () le contenu d'un tableau d'objets, je vous recommande de définir dans l'objet la méthode toString () donc avec une simple alerte (MyArray); le contenu complet du tableau sera affiché dans l'alerte.

Voici un exemple:

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

Ensuite, si vous avez un tableau de points:

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

Vous pouvez imprimer simplement en appelant:

alert(MyArray);

J'espère que cela t'aides!


1

Vous pouvez écrire une fonction qui convertira et formatera ce tableau sous forme de chaîne. Mieux encore: utilisez FireBug pour le débogage au lieu des alertes.


1

Mieux vaut utiliser Firebug (console chrome, etc.) et utiliser console.dir ()


1

Pour des raisons de lisibilité, vous pouvez utiliser:

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

En savoir plus sur JSON.stringify () .

Exemple:

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 question est étiquetée javascriptqui dit "À moins qu'une balise pour un framework / bibliothèque ne soit également incluse, une réponse JavaScript pure est attendue". Même si ce n'était pas le cas… la question se pose sur un tableau, pas sur un formulaire HTML.
Quentin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.