如何根据最大键获取对象中的值(Date是一个键)

时间:2016-09-20 05:40:32

标签: javascript date object keyvaluepair

我将对象的日期作为键,将值作为位置。我想根据最大的日期获取位置。这里的位置是一样的。日期键位于" 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"如何根据最大的密钥获取值?

先谢谢

3 个答案:

答案 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。