Maison >interface Web >js tutoriel >Comment trier correctement les chaînes en JavaScript ?

Comment trier correctement les chaînes en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-24 18:40:25384parcourir

How to Correctly Sort Strings in JavaScript?

Tri des chaînes en JavaScript

De nombreux développeurs JavaScript rencontrent des difficultés lorsqu'ils tentent de trier une liste d'objets en fonction d'un attribut de chaîne en raison de l'unique comportements des chaînes en JavaScript. Cet article explore les solutions à ce problème courant.

Problème :

Comme vous l'avez découvert, soustraire simplement une chaîne d'une autre, comme dans a.attr - b.attr , ne trie pas avec précision les chaînes en JavaScript. En effet, JavaScript traite les chaînes comme des caractères Unicode et les opérations arithmétiques de base ne conviennent pas pour les comparer.

Solution :

Pour trier efficacement les chaînes, vous pouvez utiliser le Méthode String.prototype.localeCompare. Cette méthode fournit une comparaison des chaînes en fonction des paramètres régionaux, ce qui la rend plus adaptée au tri. Voici une version mise à jour de votre code en utilisant localeCompare :

list.sort(function(a, b) {
    return ('' + a.attr).localeCompare(b.attr);
});

Notez que nous avons ajouté une concaténation de chaînes vides ('' a.attr) pour garantir que les deux valeurs sont converties en chaînes. Ceci afin d'éviter des exceptions potentielles.

Alternatives :

Si vous préférez une approche plus succincte et n'avez pas besoin de prendre en compte la sensibilité aux paramètres régionaux, vous pouvez utiliser ce qui suit extrait de code :

if (item1.attr < item2.attr)
    return -1;
if ( item1.attr > item2.attr)
    return 1;
return 0;

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