2011-09-26 155 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 –