FROM CACHE - jp_header

Liquidフィルターのsortの挙動に関して

解決済
tono_mg
Shopify Partner
3 0 0

配列内をa-zで並び替えをしようと思ったのですが

英字だと並び替えができるのですが、日本語だとうまく並び替えができないです。

そういうものなのでしょうか?

他に良いフィルターがあったりするのでしょうか?

 

 

(例)
{%- liquid
  assign arr = 'curry,Banana,tea,Apple,peach' | split: ','
  assign arrjp = 'カレー,ばなな,茶,林檎,桃' | split: ','
%}

{{ arr | sort | join: ' ' }} <br>
{{ arrjp | sort | join: ' ' }}

結果:
Apple Banana curry peach tea
ばなな カレー 林檎 桃 茶

 

 

1 件の受理された解決策
_osamu_iwasaki_
Shopify Partner
185 47 192

成功

SORTフィルターは、数字, 英字大文字, 英字小文字,平仮名,片仮名,漢字... の順番に並ぶので、平仮名片仮名漢字が混ざっている場合は、平仮名の中で並び替えた後に、片仮名の中で並び替えて、最後に漢字を並び替えます。

 

雨,ウ,う,意,イ,い,亜,ア,あ,c,C,b,B,a,A,3,2,1

 ↓

1 2 3 A B C a b c あ い う ア イ ウ 亜 意 雨

 

PHPのmb_convert_kanaのような関数はありません。

元の投稿で解決策を見る

4件の返信4
株式会社フルバランス
Shopify Partner
1285 461 605

Tono_mg 様

 

はじめまして、フルバランスの道家です。

 

ご質問を確認いたしました。

 

sortにつきましては、英語、ひらがな、カタカタで統一しておく必要がございます。

混在している状態ですと以下のようにJSで実装されるのがよいかと思います。

https://blog.kimizuka.org/entry/2021/06/03/121459

https://note.kiriukun.com/entry/20181129-sort-with-local-compare

 

なにかヒントになれば幸いです。

 

私たちの励みにもなりますので、

お役に立てていればBest Answerボタンを押して頂ければ嬉しいです。

 

分からない点があれば、またいつでもご連絡ください。

 

フルバランス 道家

株式会社フルバランス(Shopify Experts)
Shopify専門のEC成長支援会社です。ECの技術・実務・成長、お悩みのことがあれば、気軽にご相談ください。
『すべてのブランドの特大成長エンジンを搭載する』 株式会社フルバランス
tono_mg
Shopify Partner
3 0 0

ありがとうございます!

やはり混在していると難しいんですね。

_osamu_iwasaki_
Shopify Partner
185 47 192

成功

SORTフィルターは、数字, 英字大文字, 英字小文字,平仮名,片仮名,漢字... の順番に並ぶので、平仮名片仮名漢字が混ざっている場合は、平仮名の中で並び替えた後に、片仮名の中で並び替えて、最後に漢字を並び替えます。

 

雨,ウ,う,意,イ,い,亜,ア,あ,c,C,b,B,a,A,3,2,1

 ↓

1 2 3 A B C a b c あ い う ア イ ウ 亜 意 雨

 

PHPのmb_convert_kanaのような関数はありません。

tono_mg
Shopify Partner
3 0 0

わかりやすくありがとうございます。