3

Javascript 용 Intl.Collator 개체를 맞춤 설정할 수 있습니까? 내가 가진 가정하자 : 내가 그들을 분류하면맞춤 정보 통합 업체?

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

에서, ñ 기본적으로 끝까지 갈 것입니다 : 새로운 Intl.Collator를 사용하여, 그러나

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

을, 내가 할 수있는 :

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

스페인어 (es) 규칙에 따라 정렬하고 n 다음에 ñ을 넣습니다.

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

이제, ñ 첫째을 넣어 것이라고, 나는 내 자신의 Collator을 쓰고 싶다 어떤 이유로 가정?

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

나는 Intl.Collator 설정 새 규칙을 사용자 지정하는 방법에 대한 정보를 찾을 수 없어.

이것이 가능합니까?

업데이트

는 네, 가능합니다.

업데이트 : ECMA 스크립트 국제화에

내가 찾은 조언 사용자 정의 로케일을 만드는 방법에 대한 표준 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); 
+1

임의의 기호에 대해 임의의 순서를 정의 하시겠습니까? – cdosborn

+1

최근 새 태그 [ecmascript-intl]를 만들었지 만 현재 태그를 대체해야한다고 생각하지 않으려합니다. 원한다면 사용하십시오. – hippietrail

+1

감사합니다 @hippietrail, 나는 그것을 추가했습니다. – pat

답변

2

당신은 "감도"옵션을 사용하여 당신이 원하는 것을 얻을 수 있습니다 .

Intl.Collator.prototype에 쓸 수 없습니다.

정렬 및 문자 배열을 만들고 정렬하여 나만의 정렬 순서를 설정할 수 있습니다.

$convert[character]= sortOrder ; 

배열 구조는 목적에 따라 다릅니다.
이 구조를 사용하면 결과를 다시 변환해야합니다.

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

이 방법은 대부분의 경우에 가장 잘 작동합니다.

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