2016-08-20 1 views
2

Ich brauche für einige Debugging die ursprüngliche Reihenfolge der Eigenschaften eines JavaScript-Objekts zu sehen, aber (zumindest in Chrom Devtools) console.log() zeigt mir ein alphabetisch geordnetes Objekt.Originalreihenfolge der Objekteigenschaften in console.log anzeigen

Ex:

var obj = { 
    z: 1, 
    t: 2, 
    y: 3, 
    a: 4, 
    n: 5, 
    k: 6 
} 

console.log(obj) zeigt dies:

Object {z: 1, t: 2, y: 3, a: 4, n: 5…} 
a:4 
k:6 
n:5 
t:2 
y:3 
z:1 

//expected (needed) original order 
z: 1 
t: 2 
y: 3 
a: 4 
n: 5 
k: 6 
+1

Glauben Sie wirklich, dass JavaScript-Objekt-Eigenschaften haben eine Auftrag? –

+3

Objekte sind ungeordnete Sammlungen. Es gibt keine Garantie, dass Sie eine bestimmte Bestellung erhalten. Klingt so, als ob Ihr Debugging-Ansatz optimiert werden muss. –

+1

Sie müssen ein Array verwenden, da das Objekt nicht garantiert, dass die Eigenschaften bei jedem Iterieren derselben Reihenfolge entsprechen. Arrays garantieren diese Reihenfolge. – sniels

Antwort

6

console.log in der Tat nicht sortieren die Eigenschaften, in einigen Fällen können Sie JSON.stringify verwenden, die den Auftrag erhält, z.B.

console.log(JSON.stringify(obj, null /*replacer function */, 4 /* space */)) 

NB: Im Gegensatz zu der landläufigen Meinung, pflegen js Objekte die Aufzählung um, gemäß den OwnPropertyKeys specification (ganzen Zahlen zuerst, dann andere Eigenschaften in Auftrag)