JS Keep Dates с разницей в 1 минуту - PullRequest
0 голосов
/ 16 июня 2019

Сохранить даты с разницей в 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 ]

1 голос
/ 16 июня 2019

Это проверка, если есть разница больше, чем 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)
0 голосов
/ 16 июня 2019

Это будет работать и с другими значениями в вашем массиве

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...