如果我有一个像这样的对象:
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
如果我事先不知道列表上升到'c',除了遍历对象之外,有没有办法获取对象中的最后一项(例如'carrot'
)?< / p>
答案 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";
答案 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'