Maison >interface Web >js tutoriel >Comment trier un tableau de chaînes contenant des nombres dans l'ordre naturel ?

Comment trier un tableau de chaînes contenant des nombres dans l'ordre naturel ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 09:07:02714parcourir

How to Sort an Array of Strings Containing Numbers in Natural Order?

Tri naturel des éléments d'un tableau (chaîne avec des nombres)

Le tri d'un tableau de chaînes contenant des nombres dans un ordre « naturel » pose un défi . L'algorithme de tri par défaut traite chaque caractère individuellement, ce qui entraîne un ordre non naturel.

Solution proposée : fonction NaturalCompare

Pour surmonter ce problème, une fonction JavaScript appelée naturalCompare peut être utilisé. Cette fonction suit un algorithme spécifique pour comparer les chaînes, en considérant séparément les parties numériques et alphanumériques.

Implémentation de naturalCompare

La fonction analyse chaque chaîne dans un tableau de valeurs numériques alternées. et segments non numériques. Cela lui permet de comparer les segments numériques sous forme d'entiers et les segments non numériques de manière lexicographique. La fonction renvoie une valeur indiquant si la première chaîne est inférieure à (-1), égale à (0) ou supérieure à (1) la deuxième chaîne.

Tri à l'aide de naturalCompare

Pour trier un tableau selon l'ordre naturel, appliquez la fonction naturalCompare à la méthode de tri. Cela garantit que les chaînes sont comparées à l'aide de critères de tri naturels.

Exemple d'utilisation

Voici un exemple d'utilisation de la fonction naturalCompare pour trier un tableau de chaînes contenant des nombres :

// Input array
const array = ["IL0 Foo", "PI0 Bar", "IL10 Baz", "IL3 Bob says hello"];

// Sort using naturalCompare
array.sort(naturalCompare);

// Output array
console.log(array); // ["IL0 Foo", "IL3 Bob says hello", "IL10 Baz", "PI0 Bar"]

Notes supplémentaires

  • Cet algorithme de tri naturel peut être utilisé pour trier les chaînes sans tenir compte de la casse en définissant la fonction localeCompare sur function(a , b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }.
  • La fonction naturalCompare peut être étendue pour gérer des scénarios plus complexes en ajoutant une logique supplémentaire. Par exemple, on pourrait spécifier le délimiteur entre les segments numériques et non numériques.

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