Chromeでの文字列配列ソートがおかしい
Mac版Chrome(42.0.2311.135 64-bit)で、
自前の比較関数を用いて文字列配列のソートをすると変な結果になります。
以下から試せます。
var arr1 = ["hoge0", "piyo0", "fuga0", "fuga1", "fuga2", "fuga3", "fuga5", "fuga6", "fuga7", "fuga8"];
var arr2 = ["hoge0", "piyo0", "fuga0", "fuga1", "fuga2", "fuga3", "fuga5", "fuga6", "fuga7", "fuga8", "fuga9"];
var compare = function(a, b){
return a > b;
};
document.body.innerHTML += '1) ' + arr1.sort(compare).join(',') + '<br>';
document.body.innerHTML += '2) ' + arr2.sort(compare).join(',') + '<br>';
document.body.innerHTML += '3) ' + arr2.sort().join(',');
Firefoxなら2)と3)が同じ結果になるのですが、
Chromeで実際に実行すると以下の結果になります。2)が変です。
1) fuga0,fuga1,fuga2,fuga3,fuga5,fuga6,fuga7,fuga8,hoge0,piyo0
2) fuga3,fuga9,fuga0,fuga1,fuga2,fuga8,fuga5,fuga6,fuga7,hoge0,piyo0
3) fuga0,fuga1,fuga2,fuga3,fuga5,fuga6,fuga7,fuga8,fuga9,hoge0,piyo0
これはバグなのでしょうか?それともソートの仕方が間違っているのでしょうか?