我有一个应用程序,可以按字母顺序对发言者进行排序。某些发言者的名字的第一个字母带有特殊字符,例如“Álvaro”。
如下所示,我可以使用normalize()
使其正常工作
filteredData = filteredData.sort((a,b)=>{
a = a.name.normalize('NFD')
b = b.name.normalize('NFD')
if(a < b){
return -1
}
if(a >b){
return 1
}
return 0
})
但是,令我非常沮丧的是,我发现IE并没有正确地支持它。我在.find()
上也遇到了同样的问题,但是我发现一个简单的polyfill可以很快修复它。我还没有找到一个好的polyfill,我可以插入它来修复normalize()
。
我可以使用normalize()
的替代方法还是有人知道这种方法的合法填充好?
答案 0 :(得分:1)
localeCompare
通常用于对字符串进行排序。它具有lots of options用于本地化或排序数字,并且受IE支持:
let names = [
'Álvaro',
'AArdvark',
'Mark',
'Álmaro',
"Alvaro",
"Áavaro"
]
console.log(names.sort((a, b) => a.localeCompare(b)))