我在Chrome,Firefox和Safari上使用en-US
区域设置获得以下内容:
'é'.localeCompare('e') // result is 1
'éa'.localeCompare('eb') // result is -1
这对我来说似乎不对。
我希望如果str1 > str2
然后(str1 + postfix1) > (str2 + postfix2)
,那么这就是词典排序的工作方式。然而上面的例子违反了这一点。
这是一个错误,还是我错过了什么?
有没有办法在Javascirpt中进行适当的词典排序?
答案 0 :(得分:0)
您的代码缺少要与之比较的语言代码。
如果你用西班牙语比较它:
'é'.localeCompare('e', 'es') //=> 1
'éa'.localeCompare('ea', 'es') //=> 1
'éa'.localeCompare('eb', 'es') //=> -1
不同的语言会产生不同的结果,因为您可以阅读here
您可以在我创建的片段中播放。
干杯!
function doit() {
var char1 = document.getElementById('char1').value;
var char2 = document.getElementById('char2').value;
var lang = document.getElementById('lang').value;
document.getElementById('res').value = char1.localeCompare(char2, lang);
}

C1: <input id="char1" value="é"><br>
C2: <input id="char2" value="e"><br>
Lang: <input id="lang" value="es"><br>
Result: <input id="res"><br>
<input type="button" value="Do it" onclick="doit()">
&#13;