Maison >interface Web >js tutoriel >Comment trier un tableau d'objets par propriété de date en JavaScript ?

Comment trier un tableau d'objets par propriété de date en JavaScript ?

DDD
DDDoriginal
2024-12-21 08:01:091000parcourir

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

Tri d'un tableau d'objets par propriété de date

Pour trier un tableau d'objets par propriété de date, vous pouvez utiliser la fonction sort() de JavaScript en conjonction avec un comparateur personnalisé. Le processus consiste à comparer les valeurs de date et à renvoyer une valeur négative, positive ou nulle en fonction de leur ordre.

Réponse simple :

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

Ce comparateur crée un objet date pour les deux dates et soustrait leurs valeurs. Une valeur négative indique que a est plus proche de la date actuelle que b, une valeur positive signifie que b est plus proche et zéro indique l'égalité.

Réponse générique :

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

Cette approche plus générique permet une détermination personnalisée de l'ordre de tri en définissant des conditions distinctes pour trier o1 avant ou après o2.

Puissant Réponse :

Une solution puissante consiste à définir une fonction sortBy personnalisée non énumérable à l'aide d'une transformation schwartzienne sur tous les tableaux :

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

Cela permet un tri concis et puissant :

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

Vous pouvez également étendre cette approche pour gérer plusieurs critères dans le processus de tri en renvoyant un tableau de valeurs dans le comparateur fonction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn