Imprimer le contenu de L'objet JavaScript? [dupliquer]

cette question a déjà une réponse ici:

typiquement si nous utilisons juste alert(object); il affichera comme [object Object] . Comment imprimer tous les paramètres de contenu D'un objet en JavaScript?

377
demandé sur Eric Leschinski 2009-10-26 17:39:00

15 réponses

si vous utilisez Firefox, alert(object.toSource()) devrait suffire pour le débogage simple.

304
répondu Lukman 2009-10-26 14:56:33

cela vous donnera une très belle sortie avec l'objet JSON indenté:

alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));

Le deuxième argument modifie le contenu de la chaîne avant de la retourner. Le troisième argument spécifie le nombre d'espaces à utiliser comme espace blanc pour la lisibilité.

638
répondu Igor Jerosimić 2015-07-09 20:56:30

outre l'utilisation d'un débogueur, vous pouvez également accéder à tous les éléments d'un objet en utilisant une boucle foreach . La fonction suivante printObject devrait alert() votre objet montrant toutes les propriétés et les valeurs respectives.

function printObject(o) {
  var out = '';
  for (var p in o) {
    out += p + ': ' + o[p] + '\n';
  }
  alert(out);
}

// now test it:
var myObject = {'something': 1, 'other thing': 2};
printObject(myObject);

utiliser un outil D'inspection DOM est préférable car il vous permet de creuser sous les propriétés qui sont des objets eux-mêmes. Firefox a FireBug mais tous les autres navigateurs importants (IE, Chrome, Safari) ont aussi des outils de débogage intégré que vous devriez vérifier.

72
répondu Miguel Ventura 2009-10-26 14:48:38

si vous voulez juste avoir une représentation string d'un objet, vous pouvez utiliser la fonction JSON.stringify , en utilisant une bibliothèque JSON .

24
répondu CMS 2009-10-26 14:45:06

Imprimer le contenu de l'objet, vous pouvez utiliser le bouton

console.log(obj_str);

vous pouvez voir le résultat dans la console comme ci-dessous.

Object {description: "test"} 

pour la console ouverte appuyez sur F12 dans le navigateur chrome, vous trouverez onglet console en mode de débogage.

13
répondu Nikunj K. 2013-11-28 06:11:59

vous pourriez utiliser .inspecter (objet) pour imprimer la structure de l'objet.

il est particulièrement utile lorsque votre objet a des dépendances circulaires par exemple

$ node

var obj = {
   "name" : "John",
   "surname" : "Doe"
}
obj.self_ref = obj;

util = require("util");

var obj_str = util.inspect(obj);
console.log(obj_str);
// prints { name: 'John', surname: 'Doe', self_ref: [Circular] }

Il que les cas JSON.stringify lance exception: TypeError: Converting circular structure to JSON

10
répondu Michal 2013-11-19 13:01:25

vous devriez envisager d'utiliser FireBug pour le débogage JavaScript. Il vous permettra d'inspecter interactivement toutes vos variables, et même de passer par les fonctions.

8
répondu Jonathan Feinberg 2009-10-26 14:41:09

utiliser dir (objet). Ou vous pouvez toujours télécharger Firebug pour Firefox (vraiment utile).

7
répondu OverLex 2009-10-26 14:57:18

Javascript pour tous!

String.prototype.repeat = function(num) {
    if (num < 0) {
        return '';
    } else {
        return new Array(num + 1).join(this);
    }
};

function is_defined(x) {
    return typeof x !== 'undefined';
}

function is_object(x) {
    return Object.prototype.toString.call(x) === "[object Object]";
}

function is_array(x) {
    return Object.prototype.toString.call(x) === "[object Array]";
}

/**
 * Main.
 */
function xlog(v, label) {
    var tab = 0;

    var rt = function() {
        return '    '.repeat(tab);
    };

    // Log Fn
    var lg = function(x) {
        // Limit
        if (tab > 10) return '[...]';
        var r = '';
        if (!is_defined(x)) {
            r = '[VAR: UNDEFINED]';
        } else if (x === '') {
            r = '[VAR: EMPTY STRING]';
        } else if (is_array(x)) {
            r = '[\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + ']';
        } else if (is_object(x)) {
            r = '{\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + '}';
        } else {
            r = x;
        }
        return r;
    };

    // Space
    document.write('\n\n');

    // Log
    document.write('< ' + (is_defined(label) ? (label + ' ') : '') + Object.prototype.toString.call(v) + ' >\n' + lg(v));
};



// Demo //

var o = {
    'aaa' : 123,
    'bbb' : 'zzzz',
    'o' : {
        'obj1' : 'val1',
        'obj2' : 'val2',
        'obj3' : [1, 3, 5, 6],
        'obj4' : {
            'a' : 'aaaa',
            'b' : null
        }
    },
    'a' : [ 'asd', 123, false, true ],
    'func' : function() {
        alert('test');
    },
    'fff' : false,
    't' : true,
    'nnn' : null
};

xlog(o, 'Object'); // With label
xlog(o); // Without label

xlog(['asd', 'bbb', 123, true], 'ARRAY Title!');

var no_definido;
xlog(no_definido, 'Undefined!');

xlog(true);

xlog('', 'Empty String');
3
répondu Eduardo Cuomo 2013-05-28 20:36:13

vous pouvez donner à vos objets leurs propres méthodes de lancement dans leurs prototypes.

2
répondu kennebec 2009-10-26 17:39:28

vous pouvez utiliser json.js de http://www.json.org/js.html pour changer les données json en données string.

2
répondu hay 2011-12-15 20:42:40

vous pouvez également utiliser L'objet de Prototype.inspecter (), qui Retourne le débogage chaîne orienté représentation de l'objet".

http://api.prototypejs.org/language/Object/inspect /

2
répondu snw 2012-04-29 21:07:21

fonction Simple pour alerter le contenu d'un objet ou d'un tableau .

Appelez cette fonction avec un tableau ou une chaîne de caractères ou un objet qui alerte le contenu.

fonction

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

Utilisation

var data = [1, 2, 3, 4];
print_r(data);
1
répondu Rayiez 2013-07-07 13:22:40

Internet Explorer 8 dispose d'outils de développement qui est similaire à Firebug pour Firefox. Opera a Opera DragonFly, et Google Chrome a aussi quelque chose appelé outils de développement (Shift+Ctrl+J).

Voici une réponse plus détaillée pour déboguer JavaScript dans IE6-8: utilisant les "outils de développement" IE8 pour déboguer les versions précédentes D'IE

0
répondu gregers 2017-05-23 12:02:48

j'ai fait face à un problème similaire, la raison pour cela était que je fais usage d'ajax pour récupérer des données. Dans ce cas, j'avais fait deux asynchrone appel ajax. Dans l'un, je rends la chaîne msg et affiche en alerte. Dans le deuxième appel ajax Je fetch arraylist dans le format json et le décoder dans js. Donc ma deuxième requête utilise pour traiter en premier et je devenais alerte de l'objet.

Vérifiez. 1. alerte doit contenir la chaîne de caractères. 2. Si vous obtenez arrayList ou tout autre objet le décoder.

Tout le meilleur!

-3
répondu user3308542 2014-03-10 04:16:12