2016-01-21 49 views
1

我需要按字母順序排序JS字符串。在英文排序是很容易的:比較和排序多種語言的字符串

sortArr.sort(function (a , b) { 
    return a > b ? 1 : -1; 
}); 

但是我正在工作的應用程序將被翻譯成i.a.阿拉伯文,中文,德文,俄文和其他一些。我可以看到,即使對於非ASCII字符,結果似乎也不正確。

我根據文檔發現Intl.Collator().compare

的Intl.Collat​​or目的是一種用於配頁,對象,使語言敏感字符串比較的構造函數。

但是,它不支持Safari和大多數移動瀏覽器。

有沒有其他解決方案我可以使用?

編輯

String.prototype.localeCompare()但瀏覽器的支持不夠好了。

+0

有一個polyfill嘗試,但polyfilling'Intl.Collat​​or'是相當不合理的:https://github.com/andyearnshaw/Intl.js/從webkit跟蹤器的這個bug來看,似乎有一些進展這個問題雖然:https://bugs.webkit.org/show_bug.cgi?id=147601對於很多情況下,做服務器端排序也可能是一個可行的解決方案。 – nils

+0

@nils好的,我看到它有npm包,我會仔細看看。謝謝 –

+1

Node.js支持應該在那裏。我只是在節點repl中嘗試了'Intl.Collat​​or()',它似乎工作。 – nils

回答

1

簡短的回答是沒有。
每種語言都有自己的字母順序。例如 俄語的字母'с'與土耳其語不同。 您唯一的選擇是在可能的情況下使用Collator(支持它的瀏覽器)。 Afaik沒有任何其他隨時可用的庫或對象可用於實現此目的。