Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengisih Susunan Objek mengikut Harta Tarikh dalam JavaScript?

Bagaimana untuk Mengisih Susunan Objek mengikut Harta Tarikh dalam JavaScript?

DDD
Lepaskan: 2024-12-21 08:01:09
asal
996 orang telah melayarinya

How to Sort an Array of Objects by Date Property in JavaScript?

Mengisih Tatasusunan Objek mengikut Harta Tarikh

Untuk mengisih tatasusunan objek mengikut sifat tarikh, anda boleh menggunakan fungsi sort() JavaScript bersempena dengan pembanding tersuai. Proses ini melibatkan membandingkan nilai tarikh dan mengembalikan nilai negatif, positif atau sifar berdasarkan susunannya.

Jawapan Mudah:

array.sort(function(a, b) {
  return new Date(b.date) - new Date(a.date);
});
Salin selepas log masuk

Pembanding ini mencipta objek tarikh untuk kedua-dua tarikh dan menolak nilainya. Nilai negatif menunjukkan bahawa a lebih dekat dengan tarikh semasa daripada b, nilai positif bermakna b lebih dekat, dan sifar menunjukkan kesamaan.

Jawapan Generik:

array.sort(function(o1, o2) {
  if (sort_o1_before_o2) return -1;
  else if (sort_o1_after_o2) return 1;
  else return 0;
});
Salin selepas log masuk

Pendekatan yang lebih generik ini membolehkan penentuan tersuai bagi susunan pengisihan dengan mentakrifkan syarat yang berasingan untuk pengisihan o1 sebelum atau selepas o2.

Jawapan Berkuasa:

Penyelesaian yang berkuasa adalah untuk mentakrifkan fungsi isihan mengikut tersuai yang tidak boleh dikira menggunakan penjelmaan Schwartzian pada semua tatasusunan:

(function() {
  if (typeof Object.defineProperty === 'function') {
    try {
      Object.defineProperty(Array.prototype, 'sortBy', { value: sb });
    } catch (e) {}
  }
  if (!Array.prototype.sortBy) Array.prototype.sortBy = sb;

  function sb(f) {
    for (var i = this.length; i;) {
      var o = this[--i];
      this[i] = [].concat(f.call(o, o, i), o);
    }
    this.sort(function(a, b) {
      for (var i = 0, len = a.length; i < len; ++i) {
        if (a[i] != b[i]) return a[i] < b[i] ? -1 : 1;
      }
      return 0;
    });
    for (var i = this.length; i;) {
      this[--i] = this[i][this[i].length - 1];
    }
    return this;
  }
})();
Salin selepas log masuk

Ini membolehkan pengisihan ringkas dan berkuasa:

array.sortBy(function(o) { return o.date });
Salin selepas log masuk

Anda juga boleh mengembangkan pendekatan ini untuk mengendalikan berbilang kriteria dalam proses pengisihan dengan mengembalikan tatasusunan nilai dalam fungsi pembanding.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Susunan Objek mengikut Harta Tarikh dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan