Maison  >  Article  >  interface Web  >  Comment trier un tableau JavaScript multidimensionnel par plusieurs colonnes ?

Comment trier un tableau JavaScript multidimensionnel par plusieurs colonnes ?

DDD
DDDoriginal
2024-10-28 23:18:30123parcourir

How to Sort a Multidimensional JavaScript Array by Multiple Columns?

Tri de tableaux multidimensionnels par plusieurs colonnes

En JavaScript, le tri d'un tableau de chaînes peut être facilement réalisé à l'aide de la fonction Array.sort() . Cependant, pour les tableaux multidimensionnels, ou lors d'un tri basé sur plusieurs critères, une fonction personnalisée est requise.

Considérons un tableau avec la structure suivante :

[publicationID][publication_name][ownderID][owner_name]

Le but est de trier le tableau par nom_propriétaire, puis par nom_publication, ce qui entraînerait le regroupement des propriétaires portant le même nom et le tri des publications au sein de chaque groupe par ordre alphabétique.

Auparavant, une fonction de tri personnalisée nommée mysortfunction a été introduite, qui triait le tableau basé sur une seule colonne,owner_name. Pour étendre cette fonction au tri multicolonne, les modifications suivantes peuvent être apportées :

<code class="javascript">function mysortfunction(a, b) {

  var o1 = a[3].toLowerCase();
  var o2 = b[3].toLowerCase();

  var p1 = a[1].toLowerCase();
  var p2 = b[1].toLowerCase();

  if (o1 < o2) return -1;
  if (o1 > o2) return 1;
  if (p1 < p2) return -1;
  if (p1 > p2) return 1;
  return 0;
}</code>

Dans cette fonction mise à jour :

  • o1 et o2 représentent les noms des propriétaires en minuscules.
  • p1 et p2 représentent les noms des publications en minuscules.

Tout d'abord, il compare les noms des propriétaires. S'ils diffèrent, la fonction renvoie -1 ou 1 pour indiquer lequel doit précéder l'autre.

Cependant, si les noms des propriétaires sont identiques, la fonction procède à la comparaison des noms de publication. Dans ce cas, elle renvoie -1 ou 1 pour préciser leur ordre.

Si les deux comparaisons aboutissent à l'égalité, la fonction renvoie 0, indiquant que les deux éléments sont égaux et doivent conserver leur ordre d'origine.

En triant le tableau à l'aide de cette fonction personnalisée, l'objectif de tri par nom_propriétaire puis par nom_publication est atteint. Les propriétaires portant le même nom seront regroupés, les publications au sein de chaque groupe étant classées par ordre alphabétique.

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