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
DDDasal
2024-12-21 08:01:09997semak imbas

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);
});

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;
});

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;
  }
})();

Ini membolehkan pengisihan ringkas dan berkuasa:

array.sortBy(function(o) { return o.date });

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!

Kenyataan:
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