Maison > interface Web > js tutoriel > le corps du texte

Comment effectuer un tri stable en JavaScript pour maintenir la cohérence de l'ordre des éléments ?

Susan Sarandon
Libérer: 2024-10-18 20:42:03
original
601 Les gens l'ont consulté

How to Perform Stable Sorting in JavaScript to Maintain Element Order Consistency?

Algorithmes de tri stables en JavaScript

Lors du tri de données, la préservation de l'ordre d'origine des éléments égaux est cruciale pour les algorithmes de tri stables. Dans ce contexte, nous visons à trier un tableau d'objets avec une clé spécifique dans un ordre donné tout en maintenant la cohérence de l'ordre des éléments.

Technique de tri stable

Fait intéressant, même les fonctions de tri non stables peuvent réaliser un tri stable. En capturant la position initiale de chaque élément avant le tri, nous pouvons rompre les liens dans la comparaison de tri en utilisant la position comme critère secondaire.

Implémentation en JavaScript

<code class="javascript">const sortBy = (arr, key, order) => {
  // Capture element positions
  const positions = arr.map((item, i) => {
    return { item, position: i };
  });

  // Perform sorting
  positions.sort((a, b) => {
    let cmp = a.item[key].localeCompare(b.item[key]);
    if (cmp === 0) {
      // Tiebreaker: sort by position
      cmp = a.position - b.position;
    }
    if (order === "desc") {
      return cmp * -1;
    } else {
      return cmp;
    }
  });

  // Return sorted objects
  return positions.map(position => position.item);
};</code>
Copier après la connexion

Exemple d'utilisation

<code class="javascript">const data = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Eve", age: 25 },
];

const sortedAscending = sortBy(data, "age", "asc");
console.log(sortedAscending); // [{ name: "Alice", age: 25 }, { name: "Eve", age: 25 }, { name: "Bob", age: 30 }]

const sortedDescending = sortBy(data, "age", "desc");
console.log(sortedDescending); // [{ name: "Bob", age: 30 }, { name: "Eve", age: 25 }, { name: "Alice", age: 25 }]</code>
Copier après la connexion

Cette technique permet un tri stable en JavaScript, en préservant l'ordre d'origine des éléments de valeurs égales.

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
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal