web-dev-qa-db-de.com

Inhalt des JavaScript-Objekts drucken?

Wenn wir nur alert(object); verwenden, wird dies normalerweise als [object Object] angezeigt. Wie drucke ich alle Inhaltsparameter eines Objekts in JavaScript?

399
cometta

Wenn Sie Firefox verwenden, sollte alert(object.toSource()) für einfache Debugging-Zwecke ausreichen.

313
Lukman

Dadurch erhalten Sie eine sehr schöne Ausgabe mit eingerückten JSON-Objekten:

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

Das zweite Argument ändert den Inhalt des Strings, bevor er zurückgegeben wird. Das dritte Argument gibt an, wie viele Leerzeichen zur besseren Lesbarkeit als Leerzeichen verwendet werden sollen.

688
Igor Jerosimić

Abgesehen von der Verwendung eines Debuggers können Sie auch mit einer foreach -Schleife auf alle Elemente eines Objekts zugreifen. Die folgende printObject Funktion sollte alert() Ihr Objekt sein und alle Eigenschaften und entsprechenden Werte anzeigen.

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

Die Verwendung eines DOM-Inspektionstools ist vorzuziehen, da Sie damit unter den Eigenschaften graben können, bei denen es sich um Objekte handelt. Firefox hat FireBug, aber in allen anderen wichtigen Browsern (IE, Chrome, Safari) sind Debugging-Tools integriert, die Sie überprüfen sollten.

73
Miguel Ventura

Wenn Sie nur eine Zeichenfolgendarstellung eines Objekts wünschen, können Sie die Funktion JSON.stringify mit einer JSON-Bibliothek verwenden.

28
CMS

Drucken Sie den Inhalt des Objekts aus, das Sie verwenden können

console.log(obj_str);

sie können das Ergebnis in der Konsole wie unten sehen.

Object {description: "test"} 

Wenn Sie im Browser chrome die Taste F12 drücken, wird im Debug-Modus die Registerkarte console angezeigt.

13
Nikunj K.

Sie können Node's til.inspect (object) verwenden, um die Objektstruktur auszudrucken.

Dies ist besonders hilfreich, wenn Ihr Objekt zirkuläre Abhängigkeiten aufweist, z.

$ 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] }

In diesem Fall löst JSON.stringify eine Ausnahme aus: TypeError: Converting circular structure to JSON

12
Michal

Sie sollten erwägen, FireBug zum Debuggen von JavaScript zu verwenden. Sie können alle Variablen interaktiv überprüfen und sogar schrittweise durch Funktionen navigieren.

8

Benutze dir (Objekt). Oder Sie können immer Firebug für Firefox (sehr hilfreich) herunterladen.

7
OverLex

Javascript für alle!

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
Eduardo Cuomo

Sie können json.js von http://www.json.org/js.html verwenden, um json-Daten in Zeichenfolgendaten zu ändern.

2
hay

Sie können Ihren Objekten in ihren Prototypen eigene toString-Methoden zuweisen.

2
kennebec

Sie können auch die Object.inspect () - Methode von Prototype verwenden, die "die debug-orientierte Zeichenfolgendarstellung des Objekts zurückgibt".

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

2
snw

Einfache Funktion zum Warnen des Inhalts eines Objekts oder eines Arrays.
Rufen Sie diese Funktion mit einem Array oder einer Zeichenfolge oder einem Objekt auf, das den Inhalt benachrichtigt.

Funktion

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

Verwendungszweck

var data = [1, 2, 3, 4];
print_r(data);
1
Rayiez

Internet Explorer 8 verfügt über Entwicklertools, die Firebug für Firefox ähneln. Opera hat Opera DragonFly, und Google Chrome hat auch so genannte Entwicklertools (Umschalt + Strg + J).

Im Folgenden finden Sie eine ausführlichere Antwort zum Debuggen von JavaScript in IE6-8: Verwenden der IE8-Entwicklertools zum Debuggen früherer IE-Versionen

0
gregers