我解析了一个像这样切片的 CSV:
data[0]
>>Date:08/23/2018, Organizer:RadioShack, Event:Promotion
Run Code Online (Sandbox Code Playgroud)
我在以下内容中发现了一个有点有用的问题:使用 JavaScript 在数组中查找最接近的日期,但是我无法将它从日期数组调整为存储在对象数组中的日期。我有从data[0]到 的日期data[10]。这不是一个非常长的数据集,但是我想比我目前的粗略方法更好地编码它:
var dateArray = [];
dateArray[0] = data[0].Date;
dateArray[1] = data[1].Date;
…
console.log(dateArray.filter(function(d) {return d - today > 0; }))
Run Code Online (Sandbox Code Playgroud)
这给了我今天日期之后的所有日期,这是一个开始,但我仍然没有找到最接近今天的日期。
问题:我想也许我可以写一个 for 循环来更快地为我提供该数组,但我仍然想知道:有没有办法可以从一组对象中找到最接近今天日期的日期并将该日期存储在:
var closestEventDate = ???
Run Code Online (Sandbox Code Playgroud)
您可以将 dateArray 减少到最接近今天的日期:
const today = new Date();
const closest = data.reduce((a, b) => a.Date - today < b.Date - today ? a : b);
Run Code Online (Sandbox Code Playgroud)
现场示例:
const today = new Date();
const closest = data.reduce((a, b) => a.Date - today < b.Date - today ? a : b);
Run Code Online (Sandbox Code Playgroud)
var now = Date.now();
var ONE_DAY_IN_MS = 86400000;
function randomDate() {
return new Date(now + (5 * ONE_DAY_IN_MS - Math.round(Math.random() * 10 * ONE_DAY_IN_MS)));
}
var data = [
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()},
{Date: randomDate()}
];
console.log("Entries:");
data.forEach(function(entry) {
console.log(entry.Date.toISOString());
});
const today = new Date();
const closest = data.reduce((a, b) => a.Date - today < b.Date - today ? a : b);
console.log("today", today.toISOString());
console.log("closest", closest.Date.toISOString());Run Code Online (Sandbox Code Playgroud)
或最接近后的今天:
const today = new Date();
const closest = data.reduce((a, b) => {
const adiff = a.Date - today;
return adiff > 0 && adiff < b.Date - today ? a : b;
});
Run Code Online (Sandbox Code Playgroud)
现场示例:
.as-console-wrapper {
max-height: 100% !important;
}Run Code Online (Sandbox Code Playgroud)
const today = new Date();
const closest = data.reduce((a, b) => {
const adiff = a.Date - today;
return adiff > 0 && adiff < b.Date - today ? a : b;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3612 次 |
| 最近记录: |