Mengisih Tatasusunan Objek mengikut Harta Tarikh
Masalah: Anda mempunyai tatasusunan objek dengan sifat tarikh dan mahu untuk menyusunnya dalam tertib menurun berdasarkan tarikh terdekat dengan hadir.
Penyelesaian:
Menggunakan Pembanding Tersuai:
Satu pendekatan ialah menggunakan jenis terbina dalam( ) kaedah bersama-sama dengan fungsi pembanding tersuai. Fungsi pembanding mengambil dua objek sebagai argumen, a dan b, dan mengembalikan nilai negatif, positif atau sifar jika a harus didahului sebelum b, selepas b, atau jika mereka harus kekal dalam kedudukan yang sama, masing-masing.
Untuk mengisih mengikut tarikh, fungsi pembanding akan menukar rentetan tarikh kepada tarikh JavaScript dan menolaknya:
array.sort(function(a, b) { return new Date(b.date) - new Date(a.date); });
Generik Penyelesaian:
Penyelesaian yang lebih generik ialah mentakrifkan fungsi sortBy() tersuai yang melakukan transformasi Schwartzian pada tatasusunan. Fungsi ini boleh digunakan untuk mengisih mengikut mana-mana harta, bukan hanya tarikh.
(function() { if (!Array.prototype.sortBy) Array.prototype.sortBy = sb; function sb(f) { // ... implementation } })();
Menggunakan fungsi tersuai ini, anda boleh mengisih mengikut sifat tarikh seperti berikut:
array.sortBy(function(o) { return o.date });
Mengendalikan Perbandingan Tarikh Kompleks:
Jika sifat tarikh anda tidak dapat dibandingkan secara langsung, anda boleh mengekstrak nilai yang setanding daripada ia, seperti objek Tarikh JavaScript:
array.sortBy(function(o) { return new Date(o.date) });
Isih mengikut Berbilang Kriteria:
Anda juga boleh menggunakan fungsi sortBy() untuk mengisih mengikut berbilang kriteria. Hanya kembalikan tatasusunan nilai daripada fungsi pembanding:
// Sort by date, then score (reversed), then name array.sortBy(function(o) { return [o.date, -o.score, o.name] });
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Susunan Objek mengikut Tarikh dalam Susunan Menurun dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!