3

Intl.CollatorJavascript 用のカスタム オブジェクトを作成することは可能ですか? 私が持っているとします:

var letters = [ "a", "n", "ñ", "x" ]

それらを並べ替えると、ñデフォルトで最後に移動します。

letters.sort() // [ "a", "n", "x", "ñ" ]

ただし、 new を使用すると、次のIntl.Collatorことができます。

letters.sort(Intl.Collator('es').compare)

esスペイン語 ( ) のルールでソートし、ñ後にn.

[ "a", "n", "ñ", "x" ] 

さて、なんらかの理由で自分の を書きたいと思ったとしCollatorますñ

[ "ñ", "a", "n", "x" ] 

の新しいルール セットのカスタマイズに関する情報を見つけることができませんでしたIntl.Collator

これは可能ですか?

アップデート

はい、可能です。

アップデート:

カスタム ロケールの作成方法に関するECMAscript i18n standard 2のアドバイスを見つけました。

function MyCollator​(locales, options) {
  Intl​.Collator​.call​(this, locales, options);
  // initialize MyCollator properties
}
MyCollator​.prototype = Object​.create​(Intl​.Collator​.prototype);
MyCollator​.prototype​.constructor = MyCollator;
// add methods to MyCollator​.prototype
var collator = new MyCollator​("de-u-co-phonebk");
a​.sort​(collator​.compare);
4

1 に答える 1

1

「感度」オプションを使用すると、必要なものを取得できる場合があります。

Intl.Collator.prototype書き込み不可です。

sort と character を使用して作成および配列し、独自のソート順を設定できる場合があります。

$convert[character]= sortOrder ;

配列構造は目的によって異なります。
この構造では、結果を再度変換する必要があります。

$letters = [$convert[a],$convert[n],$convert[ñ],$convert[x]);

これはおそらくほとんどの場合に最適です。

$letters = [[$convert[a],a],[$convert[n],n],[$convert[ñ],[ñ],[$convert[x],x]);
于 2015-01-22T20:24:15.763 に答える