Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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,我有以下多维数组,其中slot\u date来自数据库查询。我为每个学生id都有一个按钮。但是我只需要一个按钮就可以知道最近的日期 Ajax调用中的输出 [ '1': { slot_date: "2019-01-11" student_id: 26 } '2': { slot_date: "2019-01-21" student_id: 27 } '3': { slot_date: "2019-03-11" student_id

我有以下多维数组,其中
slot\u date
来自数据库查询。我为每个
学生id
都有一个按钮。但是我只需要一个按钮就可以知道最近的日期

Ajax调用中的输出

[
  '1': {
    slot_date: "2019-01-11"
    student_id: 26
  }
  '2': {
    slot_date: "2019-01-21"
    student_id: 27
  }
  '3': {
    slot_date: "2019-03-11"
    student_id: 28
  }
  '4': {
    slot_date: "2019-03-18"
    student_id: 29
  }
]

Javascript文件

join_按钮='join Meeting';
所需输出


我需要日期
2019-03-11
的id,即距离当前日期最近的日期。我只需要在2019-03-11日期加入按钮。

您给定的数组无效。数组不能有键。您不能在
[]
中写入
key:value
,请为此使用
{}
。下面是数组的示例。
最接近当前日期的日期将是最高日期,日期将为
2019-03-18

let arr = [{slot_date: "2019-01-11",student_id: 26},
           {slot_date: "2019-01-21",student_id: 27},
           {slot_date: "2019-03-11",student_id: 28},
           {slot_date: "2019-03-18",student_id: 29},
]
let maxDate = 0;
let maxDateID;
for(let item of arr){
    if(new Date(item.slot_date) > maxDate){
        maxDate = new Date(item.slot_date);
        maxDateID = item.student_id;
    }
}

通过计算到今天的绝对距离,可以根据日期对数组进行排序。然后,可以使用第一个元素

我将您的数据数组修改为数据对象,因为您使用的是键/值对

const数据={
'1': {
插槽_日期:“2019-01-11”,
学号:26
},
'2': {
插槽_日期:“2019-01-21”,
学号:27
},
'3': {
插槽_日期:“2019-03-11”,
学号:28
},
'4': {
插槽_日期:“2019-03-18”,
学号:29
}
};
const today=Date.now();
//此函数用于返回两个日期之间的绝对差值(毫秒)
常量dateAbsoluteDiff=(日期1,日期2)=>{
如果(date1-date2<0)返回日期2-date1;
否则返回日期1-日期2;
};
//获取数据的条目(键/值数组),并根据它们进行排序
//他们的约会距离今天有多远
//以第一个元素(最近的)为例,这是一个键/值对
//返回此对中的第二项,即原始对象
const closest=Object.entries(data.sort)(e1,e2)=>{
返回日期AbsoluteDiff(新日期(e1[1].插槽日期),今天)-
dateAbsoluteDiff(新日期(e2[1].插槽_日期),今天);
})[0][1];
控制台日志(最近);

console.log('Student id:',最近的.Student\u id)这不是多维数组。你的问题不清楚,你到底想实现什么?请适当编辑您的问题。强制转换为最新对象。争取时间。最近日期是从比较日期减去目标日期后绝对值较小的日期。或者只需对日期进行排序并将日期选在目标日期之后。由于您在数据中使用的是键/值对,因此您应该使用对象而不是数组,请参见下面的答案。这将为您提供2019-03-18。但我需要2019-03-11,因为最接近当前日期的日期是2019-03-11,而不是2019-03-18。我正在从阵列中获取前一个最接近的日期。我将在以下[{“插槽日期”:“2019-01-08”},{“插槽日期”:“2019-01-09”},{“插槽日期”:“2019-01-10”},{“插槽日期”:“2019-01-11”},{“插槽日期”:“2019-01-21”{“插槽日期”:“2019-03-11”},{“插槽日期”:“2019-03-18”{“插槽日期”:“2019-03-25”{“插槽日期”:“2019-04-01”{“插槽日期”},{{“插槽日期”:“2019-04-22”},{“插槽日期”:“2019-04-29”},{“插槽日期”:“2019-05-06”},{“插槽日期”:“2019-03-07”},{“插槽日期”:“2019-03-14”},{“插槽日期”:“2019-03-21”},{“插槽日期”:“2019-03-28”},{“插槽日期”:“2019-04-04”{“插槽日期”:“2019-04-11”}这是我的数组日期[“2019-03-01”{“插槽日期”:“2019-08”{2009年10月10日,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“:“2019-03-07”},{“slot_date”:“2019-03-14”},{“slot_date”:“2019-03-21”},{“slot_date”:“2019-03-28”},{“slot_date”:“2019-04-04”},{“slot_date”:“2019-04-11”}请尽快帮助。我已经添加了代码以获取下一个最接近的日期,请查看。我已经用您的新数据进行了测试,效果良好