Maison >interface Web >js tutoriel >Comment la fonction JavaScript fournie implémente-t-elle le tri naturel d'un tableau de chaînes contenant des nombres ?
Tri naturel des éléments d'un tableau (chaîne avec des nombres)
Trier un tableau de chaînes contenant des nombres de manière significative peut être un défi. Les trier lexicographiquement aboutit souvent à un ordre inattendu. Pour obtenir l'ordre de « tri naturel » souhaité, nous pouvons utiliser l'approche suivante :
Solution :
La fonction JavaScript fournie utilise une fonction de comparaison personnalisée appelée naturalCompare. Voici comment cela fonctionne :
Tokeniser les chaînes :
Boucle de comparaison :
Gestion de la longueur inégale des jetons :
Exemple :
Voici un exemple d'utilisation de cette approche pour trier le tableau :
<br>function naturalCompare(a, b) {</p> <pre class="brush:php;toolbar:false">// Tokenization var ax = [], bx = []; a.replace(/(\d+)|(\D+)/g, function(_, , ) { ax.push([ || Infinity, || ""]) }); b.replace(/(\d+)|(\D+)/g, function(_, , ) { bx.push([ || Infinity, || ""]) }); // Comparison while(ax.length && bx.length) { var an = ax.shift(); var bn = bx.shift(); var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]); if(nn) return nn; } // Handling unequal length return ax.length - bx.length;
}
// Tri tableau de tests
let arr = ["IL0 Foo", "PI0 Bar", "IL10 Baz", "IL3 Bob dit bonjour"];
arr.sort(naturalCompare);
console.log(arr );
Sortie :
[
"IL0 Foo",
"IL3 Bob dit bonjour",
"IL10 Baz",
"PI0 Bar"
]
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!