JS Keep Dates с разницей в 1 минуту

Храните Даты с разницей в 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-минутного интервала? пожалуйста, добавьте то, что вы пробовали.

Nina Scholz 16.06.2019 10:56

@STEEL, насколько мне известно, какой будет результат, если вы добавите это в свой массив: «2018-05-07T09:58:09.000Z»? Я бы предположил, что 3 предмета, верно?

RicHard 18.06.2019 18:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это проверка, если разница больше 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.info(result)

Спасибо. Исходный код на самом деле был многомерным массивом объектов. И, следовательно, я не мог опубликовать свой исходный код. Спасибо еще раз.

STEEL 17.06.2019 05:35

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

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.info(retArr.sort());

Другие вопросы по теме