ホームページ > ウェブフロントエンド > jsチュートリアル > Cloud Firestore のクエリで大文字と小文字を区別しない並べ替えを実装するにはどうすればよいですか?

Cloud Firestore のクエリで大文字と小文字を区別しない並べ替えを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-22 08:54:03
オリジナル
662 人が閲覧しました

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

Cloud Firestore のクエリを使用した Firestore 大文字と小文字を区別しない並べ替え

Cloud Firestore では、データの並べ替えでは本質的に大文字と小文字が区別されます。 OrderBy メソッドを使用すると、指定されたフィールドに基づいてデータが昇順または降順で並べ替えられます。ただし、「AAA」や「aaa」など、データに大文字と小文字の違いが含まれている場合、返される順序は希望どおりにならない可能性があります。

大文字と小文字を区別する並べ替えの問題

デフォルトでは、Firestore は次の順序でデータを並べ替えます:

AAA
BBB
aaa
bbb
ログイン後にコピー

ただし、期待されるのは次のとおりです:

AAA
aaa
BBB
bbb
ログイン後にコピー

解決策: 大文字と小文字を区別しないデータの保存

Firestore には並べ替え時に大文字と小文字を無視するための組み込みフラグが提供されていないため、大文字と小文字を区別しない並べ替えを実現する唯一の方法は、大文字と小文字を区別しないバージョンのデータを含む追加フィールドを保存することです。

値「AAA」と「aaa」を格納する myData というフィールドについて考えてみましょう。大文字と小文字を区別しない並べ替えを行うには、大文字と小文字を区別しないバージョンのデータを含む myData_insensitive という 2 番目のフィールドを保存する必要があります。

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

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

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

DocD:
-> myData = 'bbb'
-> myData_insensitive = 'BBB'
ログイン後にコピー

大文字と小文字を区別しないデータによるクエリと並べ替え

myData_insensitive でデータのクエリと並べ替えを行うことができるようになりました。これにより、大文字と小文字を区別せずに目的の並べ替え結果が得られます。

Unicode とローカルの考慮事項

重要Unicode の大文字と小文字の正規化は、単に小文字または大文字に変換するよりも複雑であることに注意してください。言語によって照合ルールが異なる場合があり、文字の並べ替え方法に影響します。

大文字と小文字の正規化に大文字と小文字の分割を使用する

これらの複雑さに対処するには、大文字と小文字の分割を使用して大文字と小文字の正規化を実装できます。これにより、大文字と小文字の形式が異なる文字 (「a」、「A」など) が同等のものとして扱われることが保証されます。最新のブラウザは、このためのネイティブ関数をサポートしています。

例を示します。

<code class="javascript">caseFoldNormalize = function (s) {
  return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase();
};</code>
ログイン後にコピー

この例では、大文字と小文字の違いを無視して、文字列 s を完全に正規化されたバージョンに変換します。

By大文字と小文字を区別しない並べ替えと正規化を利用すると、大文字と小文字を区別しない方法で Cloud Firestore でデータを効果的に並べ替えることができ、大文字と小文字の違いに関係なくデータの順序の一貫性を確保できます。

以上がCloud Firestore のクエリで大文字と小文字を区別しない並べ替えを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート