Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在日期数组中搜索最近的日期_Javascript_Arrays - Fatal编程技术网

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

我在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() - 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大于参数日期,它将是升序排序数组中与较大日期中的前一个日期最近的日期。。