Bagaimana saya bisa mengetahui tanggal minimum dan maksimum dari serangkaian tanggal? Saat ini, saya membuat array seperti ini:
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"))
Apakah ada fungsi bawaan untuk melakukan ini atau saya akan menulis sendiri?
javascript
date
max
min
Legenda
sumber
sumber
dates.push('2011/06/05')
. Dengan menggunakan string, array dapat dengan mudah diurutkan dan nilai anggota pertama dan terakhir dikembalikan dan dikonversi ke tanggal jika perlu.YYYY/MM/DD HH:MM:SS
dan ada banyak string yang terlibat, apakah Anda akan merekomendasikan perbandingan atau perbandingan stringNumber(new Date(dateString))
?Sesuatu seperti:
Diuji di Chrome 15.0.854.0 dev
sumber
Array.reduce()
tidak tersedia di IE sebelum IE9. Ide yang bagus.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
dan_.max
bekerja pada susunan tanggal; gunakan jika Anda menggunakan Lodash atau Underscore, dan pertimbangkan untuk menggunakan Lodash (yang menyediakan banyak fungsi utilitas seperti ini) jika Anda belum melakukannya.Sebagai contoh,
akan mengembalikan tanggal kedua dalam larik (karena ini adalah yang paling awal).
sumber
Sama seperti apply, sekarang dengan spread :
(bisa menjadi komentar untuk jawaban terbaik)
sumber
Karena tanggal diubah menjadi periode UNIX (angka), Anda dapat menggunakan Math.max / menit untuk mencari:
(diuji di chrome saja, tetapi seharusnya berfungsi di sebagian besar browser)
sumber
** Gunakan Operator Spread | ES6 **
Itu akan memberikan tanggal minimum dari array.
sumber
ONELINER :
menghasilkan variabel
min
danmax
, kompleksitas O (nlogn) , contoh yang dapat diedit di sini . Jika array Anda memiliki nilai tanpa tanggal (likenull
), bersihkan dulu dengandates=dates.filter(d=> d instanceof Date);
.Tampilkan cuplikan kode
sumber
sumber
Jawaban di atas tidak menangani nilai kosong / tidak ditentukan untuk memperbaikinya saya menggunakan kode di bawah ini dan mengganti kosong dengan NA:
Saya telah menambahkan demo javascript biasa di sini dan menggunakannya sebagai filter dengan AngularJS di codepen ini
sumber
Ini adalah cara yang sangat bagus untuk melakukan ini (Anda bisa mendapatkan maksimum array objek menggunakan salah satu properti objek):
Math.max.apply(Math,array.map(function(o){return o.y;}))
Ini adalah jawaban yang diterima untuk halaman ini: Menemukan nilai maksimal atribut dalam larik objek
sumber
Menggunakan Moment , Underscore dan jQuery , untuk mengulang array tanggal.
Contoh JSON:
Javascript:
Semoga membantu.
sumber