Katakanlah saya memiliki array dari beberapa objek:
var array = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];
Bagaimana saya bisa mengurutkan array ini berdasarkan elemen tanggal agar dari tanggal yang paling dekat dengan tanggal dan waktu saat ini? Perlu diingat bahwa array mungkin memiliki banyak objek, tetapi demi kesederhanaan saya menggunakan 2.
Apakah saya akan menggunakan fungsi sortir dan pembanding khusus?
MEMPERBARUI:
Dalam kasus khusus saya, saya ingin tanggal diatur dari yang terbaru ke yang tertua. Akhirnya saya harus membalikkan logika fungsi sederhana sebagai berikut:
array.sort(function(a, b) {
a = new Date(a.dateModified);
b = new Date(b.dateModified);
return a>b ? -1 : a<b ? 1 : 0;
});
Ini mengurutkan tanggal dari yang terbaru.
javascript
datetime
ryandlf
sumber
sumber
Jawaban:
Jawaban paling sederhana
Lebih Banyak Jawaban Umum
Atau lebih tepatnya:
Jawaban Umum, Kuat
Tentukan
sortBy
fungsi non-enumerable khusus menggunakan transformasi Schwartzian pada semua array:Gunakan seperti ini:
Jika kencan Anda tidak sebanding secara langsung, buatlah tanggal yang sebanding darinya, mis
Anda juga dapat menggunakan ini untuk mengurutkan berdasarkan beberapa kriteria jika Anda mengembalikan array nilai:
Lihat http://phrogz.net/JS/Array.prototype.sortBy.js untuk lebih jelasnya.
sumber
return b-a;
di Jawaban Sederhana?@Phrogz jawaban sama-sama bagus, tapi di sini ada jawaban yang bagus, lebih ringkas:
Menggunakan cara fungsi panah
ditemukan di sini: Sortir tanggal dalam Javascript
sumber
a - b
juga akan berhasil. Jadi,array.sort((a, b) => a - b)
(es6)Setelah memperbaiki JSON, ini akan berfungsi untuk Anda sekarang:
sumber
Data Anda perlu beberapa koreksi:
Setelah mengoreksi data, Anda dapat menggunakan potongan kode ini:
sumber
0
jika perlu!Saya merekomendasikan GitHub: Array sortBy - implementasi
sortBy
metode terbaik yang menggunakan transformasi SchwartzianTetapi untuk sekarang kita akan mencoba pendekatan ini Gist: sortBy-old.js .
Mari kita membuat metode untuk mengurutkan array yang dapat mengatur objek dengan beberapa properti.
Menciptakan fungsi penyortiran
Pengaturan data yang tidak disortir
Menggunakannya
Akhirnya, kami mengatur array, berdasarkan
"date"
properti sebagaistring
Jika Anda ingin mengabaikan huruf besar-kecil, atur
"parser"
callback:Jika Anda ingin memperlakukan bidang "tanggal" sebagai
Date
tipe:Di sini Anda dapat bermain dengan contoh di atas:
jsbin.com/lesebi
sumber
Ini harus dilakukan ketika teman kencan Anda berada dalam format ini (hh / bb / tttt).
Lalu telepon
sortByDate(myArr);
sumber
Anda bisa menggunakan sortBy di garis bawah js.
http://underscorejs.org/#sortBy
Sampel:
sumber
Saya akan menambahkan ini di sini, karena beberapa kegunaan mungkin tidak dapat menentukan cara membalikkan metode penyortiran ini.
Untuk mengurutkan berdasarkan 'datang', kita cukup menukar a & b, seperti:
Perhatikan bahwa
a
sekarang di sisi kiri, danb
di sebelah kanan,: D!sumber
Saya pribadi menggunakan pendekatan berikut untuk mengurutkan tanggal.
sumber
saya dapat mencapai penyortiran menggunakan garis di bawah ini:
sumber
sumber
Bagi siapa pun yang ingin mengurutkan berdasarkan tanggal (format UK), saya menggunakan yang berikut:
sumber
Saya baru saja mengambil transformasi Schwartzian yang digambarkan di atas dan dijadikan fungsinya. Dibutuhkan input
array
, sortasifunction
dan boolean sebagai input:sumber
Terima kasih Ganesh Sanap. menyortir item berdasarkan bidang tanggal dari yang lama ke yang baru. Gunakan
sumber
Jika seperti saya Anda memiliki array dengan tanggal diformat seperti di
YYYY[-MM[-DD]]
mana Anda ingin memesan tanggal yang lebih spesifik sebelum yang kurang spesifik, saya datang dengan fungsi praktis ini:sumber
sumber