Как узнать минимальную и максимальную дату из массива дат? В настоящее время я создаю такой массив:
var dates = [];
dates.push(new Date("2011/06/25"))
dates.push(new Date("2011/06/26"))
dates.push(new Date("2011/06/27"))
dates.push(new Date("2011/06/28"))
Есть ли для этого встроенная функция или я должен написать свою?
javascript
date
max
min
Легенда
источник
источник
dates.push('2011/06/05')
. Используя строки, массив может быть просто отсортирован, а значения первого и последнего членов возвращены и при необходимости преобразованы в даты.YYYY/MM/DD HH:MM:SS
строки dateStrings согласованы и задействовано много строк, вы бы порекомендовали сравнение илиNumber(new Date(dateString))
сравнения строк ?Что-то вроде:
Протестировано на Chrome 15.0.854.0 dev
источник
Array.reduce()
недоступно в IE до IE9. Хотя крутая идея.function foreach(func, array) { for(var i = 0; i != array.length; ++i) { func(array[i]); } } function reduce(combine, base, array) { foreach(function(element) { base = combine(base, element); }, array); return base; }
_.min
и_.max
работать с массивами дат; используйте их, если вы используете Lodash или Underscore, и рассмотрите возможность использования Lodash (который предоставляет множество подобных служебных функций), если вы еще этого не сделали.Например,
вернет вторую дату в массиве (потому что она самая ранняя).
источник
То же, что и применить, теперь со спредом :
(может быть комментарий к лучшему ответу)
источник
Поскольку даты конвертируются в эпоху UNIX (числа), вы можете использовать Math.max / min для их поиска:
(проверено только в Chrome, но должно работать в большинстве браузеров)
источник
** Используйте операторы распространения | ES6 **
Это даст минимальную дату из массива.
источник
ОНЛАЙНЕР :
результат в переменных
min
иmax
, сложность O (nlogn) , редактируемый пример здесь . Если в вашем массиве нет значений даты (напримерnull
), сначала очистите егоdates=dates.filter(d=> d instanceof Date);
.Показать фрагмент кода
источник
источник
Приведенные выше ответы не обрабатывают пустые / неопределенные значения, чтобы исправить это, я использовал приведенный ниже код и заменил пробелы на NA:
Я добавил сюда простую демонстрацию javascript и использовал ее как фильтр с AngularJS в этом коде.
источник
Это особенно хороший способ сделать это (вы можете получить максимум массива объектов, используя одно из свойств объекта):
Math.max.apply(Math,array.map(function(o){return o.y;}))
Это принятый ответ для этой страницы: поиск максимального значения атрибута в массиве объектов
источник
С помощью Moment , Underscore и jQuery для перебора массива дат.
Пример JSON:
Javascript:
Надеюсь, поможет.
источник