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);
7条答案
按热度按时间azpvetkf1#
Object.keys
(ES5,shimmable)返回一个对象键的数组,然后对它们进行排序并获取最后一个键。你不能保证
for..in
循环中的顺序,所以我们不能完全依赖它。但是正如你所说的,键是按升序排列的,我们可以简单地对它们排序。jjhzyzn02#
试试这个:
ncecgwcz3#
如果您不需要支持旧的JS引擎:
不要假设键是按顺序排列的。获取键,然后对它们进行排序,然后在排序后获取最大值。
brc7rcf04#
对象键通常是无序的,但是通过查看您正在使用的键集,我假设您正在查找json键中的最高日期:
7ajki6be5#
ECMCA脚本规范(javascript规范)不要求浏览器维护对象属性的顺序。
与for-in相关的是ECMCA 5规范所述:
未指定枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)。
与Object.keys方法相关:
如果实现为for-in语句定义了特定的枚举顺序,则在此算法的步骤5中必须使用相同的枚举顺序。
获取最后一个定义的属性是没有意义的。你可以根据名称对属性进行排序,然后获取最后一个属性,但是如果你想要的是顺序,那么就保留一个数组。
p4tfgftt6#
第一个
或
lf5gs5x27#