Javascript 在日期数组中搜索最近的日期
我在javascript中有一个日期数组Javascript 在日期数组中搜索最近的日期,javascript,arrays,Javascript,Arrays,我在javascript中有一个日期数组 我想搜索一个日期,但我不希望它出现 但是我想得到最接近它的日期 那我该怎么做呢 function search_date(date) { var m = 1; var dateFound; var xdate = function (m) { mh.data.find(function (d) { if (Math.abs((new Date(d.x)).getTime() - da
我想搜索一个日期,但我不希望它出现
但是我想得到最接近它的日期
那我该怎么做呢
function search_date(date) {
var m = 1;
var dateFound;
var xdate = function (m) {
mh.data.find(function (d) {
if (Math.abs((new Date(d.x)).getTime() - date.getTime()) <= 30) {
return d;
} else {
if ((new Date(d.x)).getMinutes() - date.getMinutes() <= m) {
if (Math.abs((new Date(d.x)).getSeconds() - date.getSeconds()) <= 30)
return d;
}
}
});
};
var found = false;
while(!found){
if (xdate(m) != undefined){
dateFound = xdate(m);
break;
}else{
m++;
}
}
console.log(dateFound);
}
函数搜索\u日期(日期){
var m=1;
var-dateFound;
变量xdate=函数(m){
mh.数据查找(功能(d){
如果(Math.abs((new Date(d.x)).getTime()-Date.getTime())一种可能性是将其分解为一些可重用的部分。我们需要能够计算两个日期的差异,并且需要能够根据一些计算(在本例中是与目标日期的差异)找到数组的最小值
这里有一种方法可以做到这一点:
const dates=[新日期(“2018-02-18T20:24:33.000Z”)、新日期(“2018-02-18T20:45:02.000Z”)、新日期(“2018-02-18T21:22:50.000Z”)、新日期(“2018-02-18T22:06:31.000Z”)、新日期(“2018-02-18T22:47:18.000Z”)]
常量timeDiff=(第一)=>(第二)=>Math.abs(第一秒)
const minBy=(fn,list)=>list.reduce(
({d,val},item)=>fn(item)(testDate)=>minBy(timeDiff(testDate),日期)
控制台日志(关闭日期(新日期('2018-02-18T16:52:35'))
你尝试了什么?你面临什么问题?你能发布你的代码吗?很抱歉,我已经用我的代码编辑了文章。使用设置参数在日期之间设置一个选择,并让它在每个搜索结果中循环。提供一个容器,用这些参数范围内的日期填充,然后在最后手动选择您已将结果写入文件或打印到标准输出。将该类型的测试添加到您的问题中,并显示错误…如果出现错误…当前您正在要求我们为您编码。因此,我的提示如何在不给您特定代码的情况下执行。谢谢您。事实上,我发现对它们进行排序和比较是我的情况下的最佳解决方案,如果date大于参数日期,它将是升序排序数组中与较大日期中的前一个日期最近的日期。。