2015年7月3日

JavaScriptで全角カタカナの配列をソートしたい(サクではない)


 JavaScriptのsortメソッドは、アルファベット順で並び替えるのに全角カタカナの場合はちゃんと並び替えてくれません。
そこで、sortメソッドに並び替えのルールを指定します。


例題)
ア~オのランダムにならんだ配列のカタカナを昇順に並び替えます。
カタカナをそのまま比較するとちゃんと並ばないので、encodeURIまたは、encodeURIComponentでエンコードして大小を比較します。
今回は、カタカナだけなのでどちらでも良いです。
var sorting = function(f, t) {

  var f1 = encodeURIComponent(f);
  var t1 = encodeURIComponent(t);

  if(f1 > t1) {
    return 1;
  }else if(f1 < t1) {
    return -1;
  }else {
    return 0;
  }

}


var ar = ["オ", "イ", "ア", "ウ", "エ"];

console.log(ar);   // ソート前

ar.sort(sorting);

console.log(ar);   // ソート後


// 結果(nodejsを使って実行したのですが、文字化けしています)
[ '・スI', '・スC', '・スA', '・スE', '・スG' ]
[ '・スA', '・スC', '・スE', '・スG', '・スI' ]
↓変換された文字を見てカタカナに置き換えるとちゃんとソートされています。
["オ", "イ", "ア", "ウ", "エ"]
["ア", "イ", "ウ", "エ", "オ"]

0 件のコメント:

コメントを投稿