Maison > interface Web > js tutoriel > Comment implémenter un tri insensible à la casse avec la requête de Cloud Firestore ?

Comment implémenter un tri insensible à la casse avec la requête de Cloud Firestore ?

Linda Hamilton
Libérer: 2024-10-22 08:54:03
original
654 Les gens l'ont consulté

How to Implement Case-Insensitive Sorting with Cloud Firestore's Query?

Tri Firestore insensible à la casse avec la requête de Cloud Firestore

Dans Cloud Firestore, le tri des données est intrinsèquement sensible à la casse. L'utilisation de la méthode OrderBy trie les données par ordre croissant ou décroissant en fonction du champ spécifié. Toutefois, si les données contiennent des variations de casse, telles que « AAA » et « aaa », l'ordre renvoyé peut ne pas être celui souhaité.

Le problème du tri sensible à la casse

Par défaut, Firestore trie les données dans l'ordre suivant :

AAA
BBB
aaa
bbb
Copier après la connexion

Cependant, l'attente pourrait être :

AAA
aaa
BBB
bbb
Copier après la connexion

Solution : stockage des données insensibles à la casse

Étant donné que Firestore ne fournit pas d'indicateur intégré pour ignorer la casse lors du tri, la seule façon d'obtenir un tri insensible à la casse est de stocker un champ supplémentaire contenant une version des données insensible à la casse.

Considérons un champ appelé myData qui stocke les valeurs « AAA » et « aaa ». Pour rendre le tri insensible à la casse, vous devez stocker un deuxième champ appelé myData_insensitive avec la version des données insensible à la casse :

DocA:
-> myData = 'AAA'
-> myData_insensitive = 'AAA'

DocB:
-> myData = 'aaa'
-> myData_insensitive = 'AAA'

DocC:
-> myData = 'BBB'
-> myData_insensitive = 'BBB'

DocD:
-> myData = 'bbb'
-> myData_insensitive = 'BBB'
Copier après la connexion

Requête et classement par données insensibles à la casse

Vous pouvez désormais interroger et trier les données par myData_insensitive, ce qui fournira le résultat de tri souhaité, insensible à la casse.

Unicode et considérations locales

C'est important Il convient de noter que la normalisation de la casse pour Unicode est plus complexe que la simple conversion en minuscules ou en majuscules. Les langues peuvent avoir des règles de classement différentes, affectant la façon dont les caractères sont triés.

Utiliser le pliage de casse pour la normalisation de casse

Pour résoudre ces complexités, vous pouvez mettre en œuvre la normalisation de casse à l'aide du pliage de casse , qui garantit que les caractères avec des formes de casse différentes (par exemple, « a », « A ») sont traités comme équivalents. Les navigateurs modernes prennent en charge les fonctions natives pour cela.

Voici un exemple :

<code class="javascript">caseFoldNormalize = function (s) {
  return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase();
};</code>
Copier après la connexion

Cet exemple convertit la chaîne s en version entièrement normalisée, en ignorant les différences de casse.

Par Grâce au tri et à la normalisation insensibles à la casse, vous pouvez trier efficacement les données dans Cloud Firestore sans tenir compte de la casse, garantissant ainsi la cohérence de l'ordre des données quelles que soient les variations de casse.

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