2017-04-23 64 views
0

說我有一個對象,看起來像:如何刪除一些元素後重新索引對象?

{ 
    0: { ... } 
    1: { ... } 
    2: { ... } 
    ... 
    92812093: { ... } 
} 

如果刪除整個對象的一些元素,我怎麼能保持自己的相對順序?換句話說,如果03之間,我刪除了關鍵2,我希望在新的密鑰是012,其中0和1紋絲未動,通過3現已成爲2

+0

也許使用的,而不是一個數組的對象...即'啄變種= {「0」:{...},「1」:{...},「2」:{...} ...「92812093」:{...}}'阿爾法與數字排序,將不得不使用「00000000」而不是「0」(等) – Tibrogargan

+0

可能重複[是否JavaScript保證對象屬性順序?](http://stackoverflow.com/questions/5525795/does-javascript- guarantee-object-property-order) – Mikey

+0

Mikey的評論是正確的。即使一個瀏覽器按字母順序存儲您的對象成員,也不能保證下一個將會。使用一個數組似乎是做你想做的事情(我..當你移除元素'2',那個'3'元素現在是元素'2')。實際上誤解了你的問題,並認爲你已經在使用一個數組,並且當'2'被移除時,想要元素'3'保持爲'3'。既然你已經在使用一個已經是行爲的對象 - 但是你的存儲順序從未得到保證。 – Tibrogargan

回答

1

與數組不同,對象實際上並不具有數字索引。換句話說,當你循環一個對象時,你甚至不能保證你會按順序得到0, 1, 2

如果順序很重要,您可以選擇利用數組索引,並將數據格式設置爲var arr = [x, y, z]。這些數據可以通過arr[index]訪問。使用數組方法(如pop,shiftsplice)刪除元素將確保順序被保留。

例如,如果我們要拼接arr[1]arr將成爲[x, z]z現在是在索引1而不是索引2

相關問題