我有一个字符串数组,如此
let array = ['Enflure', 'Énorme', 'Zimbabwe', 'Éthiopie', 'Mongolie']
我想按字母顺序排序,所以我使用array.sort()
,我得到的结果是:
['Enflure', 'Mongolie', 'Zimbabwe', 'Énorme', 'Éthiopie']
我猜这里的问题是重音问题,所以我想在我的数组中用É
替换E
。
我试过这个
for (var i = 0; i < (array.length); i++) {
array[i].replace(/É/g, "E");
}
但它没有用。我怎么能这样做?
答案 0 :(得分:7)
您可以使用String#localeCompare
。
localeCompare()
方法返回一个数字,指示引用字符串是在排序顺序之前还是之后或与给定字符串相同。新的
locales
和options
参数允许应用程序指定应使用其排序顺序的语言,并自定义函数的行为。在忽略locales
和options
参数的旧实现中,使用的语言环境和排序顺序完全取决于实现。
var array = ['Enflure', 'Mongolie', 'Zimbabwe', 'Énorme', 'Éthiopie'];
array.sort((a, b) => a.localeCompare(b));
console.log(array);
答案 1 :(得分:5)
JS字符串不可变。这意味着替换不会替换原始字符串,但会返回一个新字符串:
for (var i = 0; i <(array.length); i++) {
array[i]=array[i].replace(/É/g,"E");
}
或更短:
array=array.map(s=>s.replace(/É/g,"E"));