Jak mogę znaleźć minimalną i maksymalną datę z tablicy dat? Obecnie tworzę tablicę taką:
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"))
Czy jest do tego wbudowana funkcja, czy mam napisać własną?
javascript
date
max
min
Legenda
źródło
źródło
dates.push('2011/06/05')
. Używając łańcuchów, tablicę można po prostu posortować, a wartości pierwszego i ostatniego elementu członkowskiego mogą zostać zwrócone i w razie potrzeby przekonwertowane na daty.YYYY/MM/DD HH:MM:SS
dużo ciągów, czy poleciłbyś porównanie ciągów lubNumber(new Date(dateString))
porównania?Coś jak:
Testowane w Chrome 15.0.854.0 dev
źródło
Array.reduce()
niedostępne w IE przed IE9. Fajny pomysł.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
i_.max
pracuj na tablicach dat; użyj ich, jeśli używasz Lodash lub Underscore, i rozważ użycie Lodash (który zapewnia wiele takich funkcji narzędziowych), jeśli jeszcze nie jesteś.Na przykład,
zwróci drugą datę w tablicy (ponieważ jest najwcześniejsza).
źródło
Tak samo jak w przypadku zastosowania, teraz z rozszerzeniem :
(może to być komentarz do najlepszej odpowiedzi)
źródło
Ponieważ daty są konwertowane na epoki UNIX (liczby), możesz użyć Math.max / min, aby je znaleźć:
(testowane tylko w Chrome, ale powinno działać w większości przeglądarek)
źródło
** Użyj operatorów rozprzestrzeniania | ES6 **
To da minimalną datę z tablicy.
źródło
ONELINER :
wynik w postaci zmiennych
min
imax
złożoności O (nlogn) , przykład do edycji tutaj . Jeśli twoja tablica nie ma wartości dat (takich jaknull
), najpierw ją wyczyśćdates=dates.filter(d=> d instanceof Date);
.Pokaż fragment kodu
źródło
źródło
Powyższe odpowiedzi nie obsługują pustych / niezdefiniowanych wartości, aby to naprawić. Użyłem poniższego kodu i zamieniłem puste miejsca na NA:
Dodałem tutaj zwykłe demo javascript i użyłem go jako filtru z AngularJS w tym codepen
źródło
Jest to szczególnie świetny sposób na zrobienie tego (możesz uzyskać maksymalną tablicę obiektów za pomocą jednej z właściwości obiektu):
Math.max.apply(Math,array.map(function(o){return o.y;}))
To jest akceptowana odpowiedź dla tej strony: Znajdowanie maksymalnej wartości atrybutu w tablicy obiektów
źródło
Używanie Moment , Underscore i jQuery do iteracji tablicy dat.
Przykładowy JSON:
JavaScript:
Mam nadzieję, że to pomoże.
źródło