我将对象的日期作为键,将值作为位置。我想根据最大的日期获取位置。这里的位置是一样的。日期键位于" MM / DD / YYYY"格式。
var obj ={};
obj['9/10/2016'] = "India-Chennai";
obj['9/15/2016'] = "Australia-Melborne";
obj['9/20/2016'] = "India-Delhi";
obj['9/25/2016'] = "India-Chennai";
形成上述对象的最大日期(密钥)为" 9/25/2016"价值将是" India-Chennai"如何根据最大的密钥获取值?
先谢谢
答案 0 :(得分:2)
你可能会做这样的事情;
var obj = {},
latest = [];
obj['9/20/2016'] = "India-Delhi";
obj['9/10/2016'] = "Japan-Osaka";
obj['9/25/2016'] = "India-Chennai";
obj['9/15/2016'] = "Australia-Melborne";
latest = obj[Object.keys(obj).sort((a,b) => new Date(b).getTime() - new Date(a).getTime())[0]];
console.log(latest);
答案 1 :(得分:2)
您可以使用Object.keys()
,Array.prototype.map()
,Math.max()
,Date.prototype.getTime()
,Array.prototype.indexOf()
var obj = {};
obj['9/10/2016'] = "India-Chennai";
obj['9/15/2016'] = "Australia-Melborne";
obj['9/20/2016'] = "India-Delhi";
obj['9/25/2016'] = "India-Chennai";
var keys = Object.keys(obj);
var map = keys.map(function(date) {return new Date(date).getTime()});
var key = Math.max.apply(Math, map);
var value = obj[keys[map.indexOf(key)]];
console.log(value);
答案 2 :(得分:1)
您可以使用Object.keys()
将密钥列表作为数组获取,然后.sort()
该数组:
var obj ={};
obj['9/10/2016'] = "India-Chennai";
obj['9/9/2016'] = "Australia-Melborne";
obj['9/25/2016'] = "India-Chennai";
obj['9/20/2016'] = "India-Delhi";
var parseDate = d => (d = d.match(/(\d{1,2})\/(\d{1,2})\/(\d{4})/)) && new Date(d[3],d[1]-1,d[2]);
var latestKey = Object.keys(obj).sort((a, b) => parseDate(a) - parseDate(b)).pop();
var result = obj[latestKey];
console.log(latestKey, result);
我使用正则表达式来解析日期,以便代码可以轻松地适应其他日期格式,例如,如果您需要d / m / yyyy而不是m / d / yyyy。