簡體   English   中英

是否有任何javascript庫與字母表的排序方法的實現,如瑞典語?

[英]Is there any javascript library with implementations of sort methods for alphabets such as swedish?

我知道您可以使用方法' localeCompare '來排序具有您自己的本地化的數組,如下所示:

aArray.sort(function(a,b){return a.localeCompare(b)});

但是,我認為瑞典網站的大多數(幾乎所有)訪問者都了解瑞典語,因此無論他/她目前使用哪種“ 語言環境 ”,他們都會期待瑞典語排序。

(我認為現在有些人會想要爭論這個假設,但我真的認為會有更多的人理解瑞典語,但目前使用的是其他語言環境而不是那些不了解瑞典語字母的人我希望“å”和“ä”的排序等同於“a”和“ö”等同於“o”。我真的希望最后三個瑞典字母“åäö” 始終按順序排序, 無論如何瀏覽器或操作系統,無論它是什么定義了“ localeCompare ”方法使用的“語言環境”

一種解決方案可能是以編程方式強制執行“localeCompare”方法時使用的“語言環境”,但據我所知,這是不可能的。 (雖然如果它確實可行,那么你如何改變語言環境?)

這個排序問題應該對所有瑞典javascript程序員來說都相當普遍,但我仍然無法找到任何開源庫,其中包含瑞典字符串比較方法的實現。 有沒有人知道這樣的庫(與sort方法一起使用時性能良好)重用而不是自己嘗試實現它?

JavaScript Internationalization API提供您所需要的。 第I頁引用了一些用法示例。 不幸的是,瀏覽器還沒有廣泛支持它。

@Richard Marr(評論是否有任何javascript庫,包括瑞典等字母表的排序方法實現?

好吧,我不確定這會非常困難,但對我來說可能不是很容易使它像你可能用javascript一樣高效。 感覺就像試圖重新發明輪子一樣,擅長javascript的人可能已經做得比我做得更好。 考慮到幾乎任何事物都存在多少個開源庫,我會有點驚訝地發現這個東西還不存在。

關於你的代碼片段

'sort(function(a,b){ return position[a] - position[b]; })' 

在我看來,你期望a和b成為角色。 例如,我認為以下類型的結構是您的想法:

var position = {
// e.g. essentially the codes here: http://en.wikipedia.org/wiki/Multinational_Character_Set
'A': 65,
'B': 66,
//...
// the three swedish characters:
//'Ä': 196, 
//'Å: 197,
//'Ö': 214,
// The above are the correct values according to the codes, but the relative ordering of Å and Ä is not correct for swedish so therefore I switch the values below:
'Å': 196, 
'Ä': 197,
'Ö': 214
};

確實可以使用這樣的位置結構,但由於sort方法的函數參數接收兩個任意字符串而不是只有一個字符的字符串,所以我猜兩個字符串中的每個字符(直到第一個差異)都必須迭代並且與職位結構相比。 我希望有一種更好(更有效)的方式來做到這一點......

@Pawel Dyda(評論是否有任何javascript庫,包括瑞典語等字母表的排序方法實現?

不,不僅僅是JS,但我找到了jQuery tablesorter,我認為這是一個很好的,但是當我找到以下代碼時遇到了排序問題:

$('table').tablesorter({ 
  textSorter: function(a,b) { 
    return a.localeCompare(b); 
  } 
});

(在http://mottie.github.com/tablesorter/docs/頁面的“sortLocaleCompare”中記錄)

事實上,我打算在服務器上實現排序,也支持使用禁用javascript的客戶端,但對於使用javascript的客戶,我認為我可以使用tablesorter而無需再次請求Web服務器獲取相同的結果集(但排序方式不同) )。 至少為結果集實現它非常簡單,不需要分頁,即當所有行都適合一個頁面時,你可以為jQuery tablesorter生成“ serverSideSorting:false ”,然后它會自動在Web中對它進行排序瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM