删除字符串数组中的重音符号

时间:2017-07-30 10:07:14

标签: javascript sorting locale

我有一个字符串数组,如此

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");
}

但它没有用。我怎么能这样做?

2 个答案:

答案 0 :(得分:7)

您可以使用String#localeCompare

  

localeCompare() 方法返回一个数字,指示引用字符串是在排序顺序之前还是之后或与给定字符串相同。

     

新的localesoptions参数允许应用程序指定应使用其排序顺序的语言,并自定义函数的行为。在忽略localesoptions参数的旧实现中,使用的语言环境和排序顺序完全取决于实现。

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"));