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
Libérer: 2024-12-21 08:01:09
original
997 Les gens l'ont consulté

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);
});
Copier après la connexion

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;
});
Copier après la connexion

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;
  }
})();
Copier après la connexion

Cela permet un tri concis et puissant :

array.sortBy(function(o) { return o.date });
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal