在JavaScript中获取JSON对象的最后一个元素

e7arh2l6  于 2022-11-26  发布在  Java
关注(0)|答案(7)|浏览(199)

我在JavaScript中得到了一个json对象,如下所示:

var json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};

而不知道最后一个键的名称。(键按升序排列)
如何读取最后一个元素的值(和键)?

azpvetkf

azpvetkf1#

var highest = json[ Object.keys(json).sort().pop() ];

Object.keys(ES5,shimmable)返回一个对象键的数组,然后对它们进行排序并获取最后一个键。
你不能保证for..in循环中的顺序,所以我们不能完全依赖它。但是正如你所说的,键是按升序排列的,我们可以简单地对它们排序。

jjhzyzn0

jjhzyzn02#

试试这个:

var lastKey;
var json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};
for(var key in json){
    if(json.hasOwnProperty(key)){
        lastKey = key;
    }
}
alert(lastKey + ': ' + json[lastKey]);
ncecgwcz

ncecgwcz3#

如果您不需要支持旧的JS引擎:

var lastKey = Object.keys(json).sort().reverse()[0];
var lastValue = json[lastKey];

不要假设键是按顺序排列的。获取键,然后对它们进行排序,然后在排序后获取最大值。

brc7rcf0

brc7rcf04#

对象键通常是无序的,但是通过查看您正在使用的键集,我假设您正在查找json键中的最高日期:

var json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};

function getMaxFromKeys(json) {
    var m;
    for (var i in json) {
        if (json.hasOwnProperty(i)) {
           m = (typeof m == 'undefined' || i > m) ? i : m;
        }
    }
    return m;
}

var latestDate = getMaxFromKeys(json);
7ajki6be

7ajki6be5#

ECMCA脚本规范(javascript规范)不要求浏览器维护对象属性的顺序。
与for-in相关的是ECMCA 5规范所述:
未指定枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)。
与Object.keys方法相关:
如果实现为for-in语句定义了特定的枚举顺序,则在此算法的步骤5中必须使用相同的枚举顺序。
获取最后一个定义的属性是没有意义的。你可以根据名称对属性进行排序,然后获取最后一个属性,但是如果你想要的是顺序,那么就保留一个数组。

p4tfgftt

p4tfgftt6#

第一个

let last_value =  Object.values(obj)[Object.values(obj).length - 1]
lf5gs5x2

lf5gs5x27#

getJsonLastElement(json) 
{
    let len = json.length
    return json[len - 1]
}

相关问题