Храните Даты с разницей в 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"
]
@STEEL, насколько мне известно, какой будет результат, если вы добавите это в свой массив: «2018-05-07T09:58:09.000Z»? Я бы предположил, что 3 предмета, верно?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это проверка, если разница больше 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)Спасибо. Исходный код на самом деле был многомерным массивом объектов. И, следовательно, я не мог опубликовать свой исходный код. Спасибо еще раз.
Это будет работать и с другими значениями в вашем массиве.
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());
как насчет крайних случаев с тремя элементами? какие предметы вы хотели бы взять, если значения находятся в пределах 2-минутного интервала? пожалуйста, добавьте то, что вы пробовали.