【问题标题】:JS Keep Dates with a difference of 1 minutesJS 保持日期相差 1 分钟
【发布时间】:2019-06-16 08:48:58
【问题描述】:

保持日期相差 1 分钟。

给定数组

[
"2018-03-01T22:16:50.000Z",
"2018-05-07T09:54:21.000Z",
"2018-05-07T09:55:10.000Z",
"2018-05-07T09:56:09.000Z"
]

在这种情况下,结果应该是

[
"2018-05-07T09:54:21.000Z",
"2018-05-07T09:55:10.000Z",
"2018-05-07T09:56:09.000Z"
]

【问题讨论】:

  • 三项的边缘情况如何?如果值在 2 分钟的间隔内,您喜欢哪些项目?请添加您尝试过的内容。
  • @STEEL 仅据我所知,如果将其添加到数组中会产生什么结果:“2018-05-07T09:58:09.000Z”?我猜是 3 项,对吧?

标签: javascript arrays sorting ecmascript-6


【解决方案1】:

如果与下一个日期相差大于 1 分钟并将其添加到数组中,这是在最后一个元素与前一个元素进行比较的情况下。

const dates = [
"2018-03-01T22:16:50.000Z",
"2018-05-07T09:54:21.000Z",
"2018-05-07T09:55:10.000Z",
"2018-05-07T09:56:09.000Z"
]

const result = dates.filter((date, i) => {

	if (i === dates.length -1) {
 	   var date = new Date(date)
     var prev = new Date(dates[i-1])
    
    if (((date.getTime() - prev.getTime()) / 1000 ) <= 1000) {
      return date
    }  
  } else {
    var date = new Date(date)
    var next = new Date(dates[i+1])

    if (((next.getTime() - date.getTime()) / 1000 ) <= 1000) {
      return date
    }  
  }
})

console.log(result)

【讨论】:

  • 谢谢。原始代码实际上是对象的多维数组。因此我无法发布我的原始代码。再次感谢。
【解决方案2】:

这也适用于数组中的其他值

var arr = [
"2018-03-01T22:16:50.000Z",
"2018-05-07T09:54:21.000Z",
"2018-05-07T09:55:10.000Z",
"2018-05-07T09:57:10.000Z",
"2018-05-07T09:56:09.000Z",
"2018-05-07T10:10:10.000Z",
"2018-05-07T10:11:10.000Z",
"2018-05-07T09:58:10.000Z",
]

arr.sort();

var lastitem = null,
    retArr = [];

arr.forEach(function (item, index) {
    if(lastitem < item){
        var last = new Date(lastitem);
        var newitem = new Date(item);
        var diffMs = (newitem - last); // milliseconds between last & newitem
        var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
        if(diffMins === 1 && $.inArray(item, retArr) == -1){
          retArr.push(item);  
        } 
        if(diffMins === 1 && $.inArray(lastitem, retArr) == -1){
          retArr.push(lastitem);  
        } 
    }
  lastitem = item;  

});

console.log(retArr.sort());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多