获取javascript对象中的最后一项

时间:2010-11-30 19:05:42

标签: javascript object

如果我有一个像这样的对象:

{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }

如果我事先不知道列表上升到'c',除了遍历对象之外,有没有办法获取对象中的最后一项(例如'carrot')?< / p>

14 个答案:

答案 0 :(得分:176)

是的,有一种方法可以使用Object.keys(obj)。它在this page中解释:

var fruitObject = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
Object.keys(fruitObject); // this returns all properties in an array ["a", "b", "c"]

如果要获取最后一个对象的值,可以这样做:

fruitObject[Object.keys(fruitObject).length-1] // "carrot"

答案 1 :(得分:56)

没有。在JSON和大多数其他键值数据结构中无法保证顺序,因此最后一项有时可能是carrot,有时则是banana,依此类推。如果您需要依赖订购,那么最好的选择是使用数组。键值数据结构的强大之处在于通过keys访问值,而不是能够获取对象的nth项。

答案 2 :(得分:14)

last = Object.keys(obj)[Object.keys(obj).length-1];

其中obj是你的对象

答案 3 :(得分:12)

var myObj = {a: 1, b: 2, c: 3}, lastProperty;
for (lastProperty in myObj);
lastProperty;
//"c";

源:http://javascriptweblog.wordpress.com

答案 4 :(得分:7)

使用ES6的解构赋值语法的解决方案:

var temp = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var { [Object.keys(temp).pop()]: lastItem } = temp;
console.info(lastItem); //"carrot"

答案 5 :(得分:6)

其他答案对我来说过于复杂了。

svc

答案 6 :(得分:5)

如果订单很重要,请使用数组,而不是对象文字。

list = ['apple', 'banana', 'carrot'];

或类似

dict = {
 'a' : ['apple', 'awesome'],
 'b' : ['best friend']
};

甚至......

dict = [{letter:'a', list:['apple', 'awesome']},{letter:'b', list:['best friend']}];

dict的密钥根本无法保证。

答案 7 :(得分:5)

至于Javascript中对象属性的排序,我只想链接到这个答案:

Elements order in a "for (… in …)" loop

具体做法是:

  

所有现代实施   ECMAScript遍历对象   属性按顺序排列   已定义

所以这里的每个其他答案都是正确的,对象属性没有正式的保证顺序。然而在实践中存在(除非任何错误自然会搞砸了甚至一蹴而就的官方指定行为)。

此外,对象属性的事实上的枚举顺序很可能在未来的EMCAScript规范中编纂。

但是,此时我不会围绕此编写代码,主要是因为没有内置工具来帮助处理对象属性顺序。你可以编写自己的,但最后你总是循环遍历一个对象中的每个属性来确定它的位置。

因此,你的问题的答案是,除了循环一个对象之外别无他法。

答案 8 :(得分:3)

JSArray = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };  
document.write(Object.keys(JSArray)[Object.keys(JSArray).length-1]);// writes 'c'   
document.write(JSArray[Object.keys(JSArray)[Object.keys(JSArray).length-1]]); // writes 'carrot'

答案 9 :(得分:1)

您还可以使用Object.values()方法:

Object.values(fruitObject)[Object.values(fruitObject).length - 1]; // "carrot"

答案 10 :(得分:1)

您可以尝试一下。这将存储最后一个项目。这里需要将obj转换为数组。然后使用数组pop()函数,该函数将从转换后的数组中返回最后一项。

var obj = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var last = Object.keys(obj).pop();
console.log(last);

答案 11 :(得分:0)

Map object in JavaScript 。现在已经有3年了。此地图数据结构保留项目的插入顺序。使用此检索最后一项将实际导致在地图中插入最新项目

答案 12 :(得分:0)

obj是您的对象。执行:

(_ => _[Object.keys(_).pop()])( obj )

答案 13 :(得分:0)

如果您的意思是按字母顺序获取最后一个密钥,则可以(保证):

var obj = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var keys = Object.keys(obj);
keys.sort();
var lastkey = keys.pop() // c
var lastvalue = obj[lastkey] // 'carrot'