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
视为相等,因此不会可靠地返回最小值。您应该使用专门为排序字符串而设计的。看见