たとえば、chineseName.sort((function(a,b){return a.localeCompare(b)}));
javascript関数localeCompareはIEとfirefoxでうまく機能しますが、Chromeでは機能しません。コードをChromeと互換性のあるものにする方法を知っている人はいますか?
4203 次
2 に答える
0
www全体を検索して答えを見つけましたが、残念ながら何もありません...だから私は自分のコードを作りました。これはデンマーク語の手紙のため、おそらくあなたにとってはあまり価値がありませんが、他の誰かが答えを求めてやってくるかもしれません. 初めての質問なのでお手柔らかに…
convert 関数: convert 関数は、「double-a」(デンマーク語) [aa] をデンマーク文字 [å] に変換します。これにより、後で文字ごとに比較しやすくなります。
danishCompareCharacter 関数: この関数は、実際の比較関数です。これは、デンマーク語のアルファベットの END にある特定のデンマーク文字 'æ'、'ø'、および 'å' に当てはまります。
danishCompareString 関数: JavaScript の並べ替え関数でパラメーターとして使用されるカスタム並べ替え関数です。
function convert(stringToConvert)
{
var returnString = new String();
var tempLetter;
for (var j = 0; j < stringToConvert.length; j++)
{
if (stringToConvert.toLowerCase()[j] == 'a' && stringToConvert.toLowerCase()[j + 1] == 'a')
{
tempLetter = 'å';
j++;
} else
{
tempLetter = stringToConvert.toLowerCase()[j];
}
returnString = returnString + tempLetter;
}
return returnString;
}
function danishCompareCharacter(firstCharacter, secondCharacter) {
if ((firstCharacter == 'æ') || (firstCharacter == 'ø') || (firstCharacter == 'å')) {
if (secondCharacter == 'æ' || secondCharacter == 'ø' || secondCharacter == 'å') {
if (firstCharacter == secondCharacter) {
return 0;
}
if ((firstCharacter == 'æ') || secondCharacter == 'å')
{
return -1;
}
if ((firstCharacter == 'å') || secondCharacter == 'æ') {
return 1;
}
}
return 1;
}
if (secondCharacter == 'æ' || secondCharacter == 'ø' || secondCharacter == 'å') {
return -1;
}
if(firstCharacter==secondCharacter){
return 0;}
if( firstCharacter < secondCharacter)
{
return -1;
}
return 1;
}
function danishCompareString(a, b)
{
var result = 0;
var length = b.length;
if (a.length < b.length)
{
length = a.length;
}
for (var i = 0; i < length; i++) {
result = danishCompareCharacter(a[i], b[i]);
if (result != 0)
{
return result;
}
}
return result;
}
function SortMyArray(arr) {
//This works in ALL browsers
arr.sort(function (a, b) {
return (danishCompareString(convert(a[0]), convert(b[0])));
//And this would have worked in any browser BUT chrome...
// if (a[0].localeCompare(b[0]) == 0) { return 0; }
// if (a[0].localeCompare(b[0]) < 0) { return -1; }
// else { return 1; }
});
}
}
于 2012-04-19T06:41:00.850 に答える