2016-08-20 58 views
2

我需要進行一些調試才能看到一個JavaScript對象屬性的原始順序,但(至少在chrome devtools中)console.log()向我顯示按字母順序排列的對象。在console.log中顯示對象屬性的原始順序

例:

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

console.log(obj)顯示了這個:

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

你真的相信JavaScript對象的屬性有訂購? –

+3

對象是無序集合。從來沒有*保證*,你會得到任何特定的訂單。聽起來像你的調試方法可能需要調整。 – 2016-08-20 13:39:15

+1

您必須使用數組,因爲對象不保證每次遍歷它們時屬性的順序都是相同的。數組確實保證了這個順序。 – sniels

回答

6

console.log確實排序的性能,在某些情況下,你可以使用JSON.stringify它保留了順序,例如

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

NB:違背普遍的信仰,JS對象保持枚舉順序,按照該OwnPropertyKeys specification(整數首先,在插入順序,然後其他屬性)

相關問題