2011-09-26 149 views
2

嗨最後一個對象,我有這個對象:jQuery的 - 通過刪除鍵

object { 
key1:[.....], 
key2:[....], 
key3:[.... ] 
} 

請問我可以刪除最後一個對象鍵(密鑰)?

我想自由地刪除最後一個對象的關鍵,而不知道任何關於該關鍵。

+0

有沒有這樣的事情作爲對象的 「最後」 鍵。對象不會跟蹤他們的鍵的順序。如果您需要保持順序,請使用數組。根據您的使用情況,保留一個單獨的密鑰陣列可能是最有效的。 – rjmunro

回答

2

你不能假設,最後添加的元素將在JavaScript對象的最後一個要件。看到這個問題:Elements order in a "for (… in …)" loop

簡而言之:如果訂單對您很重要,請使用數組。

+0

該帖子中的答案明確指出,不能信任數組... – worc

2

Javascript中沒有「最後」的對象關鍵字。對象鍵不是有序的,因此不能有第一個或最後一個。

+0

這絕對是正確的答案。 – rjmunro

2

我想,在技術上,鍵是不以任何特定的順序,但無論如何...

var key; 
for (key in obj); 
delete obj[key]; 

它遍歷整個對象,然後刪除無論是被訪問的最後一件事。

編輯說明

obj = {a : 1, b : 2, c : 3}; 

for (key in obj); // loops over the entire object, doing nothing *EXCEPT* 
        // updating the `key` variable 

alert(key); // "c" ... the last value of `key` was 'c' 

delete obj[key]; // remove obj.c 
+0

只是沒有意義。 – jAndy

+1

@jAndy,我做了一個編輯來說明發生了什麼事。它確實有效。是的,從技術上講,沒有任何命令可以反對,但是我按照它們添加的順序遍歷它們的所有JS實現,並且無論如何,總會有一個「最後一個」被訪問。 – nickf

+0

@jAndy:它確實有道理,它確實有效。 +1爲一個有趣的/聰明的解決方案 –

3

Thsi是這樣做的ES5-compatible方式:

obj = {a : 1, b : 2, c : 3}; 

var k = Object.keys(obj); 
delete obj[k[k.length-1]]; 

或更短:

delete obj[Object.keys(obj)[Object.keys(obj).length-1]]; 
+0

該死的只是IE8:/ – sbaaaang

+1

對象屬性在JavaScript中沒有指定的順序,所以這將基本上刪除一個隨機屬性。 –

+0

Good Answer .. Tnx –