Javascript 如何在哈希数组中查找最新日期并返回对应的名称键/值

Javascript 如何在哈希数组中查找最新日期并返回对应的名称键/值,javascript,arrays,date,hash,max,Javascript,Arrays,Date,Hash,Max,我有这样一个哈希数组: [ { "Address": 25, "AlertType": 1, "Area": "North", "MeasureDate": "2019-02-01T00:01:01.001Z", "MeasureValue": -1 }, { "Address": 26, "AlertType": 1, "Area": "West", "MeasureDate": "2016-04-12T15:13:11.733Z", "Measur

我有这样一个哈希数组:

[
 {
  "Address": 25,
  "AlertType": 1,
  "Area": "North",
  "MeasureDate": "2019-02-01T00:01:01.001Z",
  "MeasureValue": -1
 },
{
  "Address": 26,
  "AlertType": 1,
  "Area": "West",
  "MeasureDate": "2016-04-12T15:13:11.733Z",
  "MeasureValue": -1
},
{
  "Address": 25,
  "AlertType": 1,
  "Area": "North",
  "MeasureDate": "2017-02-01T00:01:01.001Z",
  "MeasureValue": -1
}
      .
      .
      .
]
我需要找到最近的日期,但是从相应的散列中返回地址。我有找到最新日期的代码:

let newest = new Date(Math.min.apply(null, data.map(function(e) {
  return new Date(e.created_at);
})));
most_recent = newest;
但我似乎无法得到返回的地址。我编写的代码只返回

let findEarliest = (name) => {
  let nameIndex = 0;
  data.forEach((date) => {
    if(date.created_at.includes(most_recent));
      nameIndex = data.indexOf(date);
  });
  return data[nameIndex].name;
};
任何帮助都将不胜感激

试试这个。按
MeasureDate
对哈希数组排序,然后返回第一个元素的
地址

const散列=[
{
“地址”:1,
“警报类型”:1,
“区域”:“北部”,
“测量值”:“2010-02-01T00:01:01.001Z”,
“测量值”:-1
},
{
“地址”:25,
“警报类型”:1,
“区域”:“北部”,
“被测日期”:“2019-02-01T00:01:01.001Z”,
“测量值”:-1
},
{
“地址”:26,
“警报类型”:1,
“区域”:“西部”,
“测量值”:“2016-04-12T15:13:11.733Z”,
“测量值”:-1
},
{
“地址”:20,
“警报类型”:1,
“区域”:“北部”,
“被测日期”:“2017-02-01T00:01:01.001Z”,
“测量值”:-1
}
]
const latestAddress=hash.sort((a,b)=>b.MeasureDate>a.MeasureDate)[0]。地址
console.log(latestAddress)
您可以使用以下代码:

2017年8月17日更新:

警告我。这段代码是目前最好的方法

最佳方式:

const lastAddresDetails=addressList.sort((a,b)=>b.MeasureDate.localeCompare(a.MeasureDate))[0];

console.log(lastAddresDetails.Address)
未定义它。如果在SO中运行代码段,它对我有效。您是在SO中运行代码段,还是在其他地方尝试?这两者之间有什么区别吗?我在我的翻译机里试过。数据略有不同,但我相应地更新了您的代码。数组称为data,日期称为created_at。实际上,我在Stack上找到了我在上面发布的数据,并使用了它,因为日期格式匹配。我能想到的另一件事是键不是字符串。它们是这种格式的。。。地址:。。可能是这样吗?对象中的键必须是字符串,除非它们是类似的映射或集合等。此排序函数应该是
a.MeasureDate.localCompare(b.MeasureDate)
。实际上,该函数只返回true或false,分别强制为1或0。没有-1,因此
a==b
a>b
被排序为等效。这将在排序中将
a==b
a>b
视为相等,因此不会可靠地返回最小值。您应该使用专门为排序字符串而设计的。看见