替代 normalize() 对数组进行排序
alernative to normalize() for sorting an array
我有一个应用程序按字母顺序对一组演讲者进行排序。一些演讲者的名字的首字母带有特殊字符,例如“Á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()
的替代方法吗?或者有人知道这种方法的合法好 polyfill 吗?
localeCompare
通常用于对字符串进行排序。它具有 lots of options 用于本地化或排序数字,并且受 IE 支持:
let names = [
'Álvaro',
'AArdvark',
'Mark',
'Álmaro',
"Alvaro",
"Áavaro"
]
console.log(names.sort((a, b) => a.localeCompare(b)))
我有一个应用程序按字母顺序对一组演讲者进行排序。一些演讲者的名字的首字母带有特殊字符,例如“Á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()
的替代方法吗?或者有人知道这种方法的合法好 polyfill 吗?
localeCompare
通常用于对字符串进行排序。它具有 lots of options 用于本地化或排序数字,并且受 IE 支持:
let names = [
'Álvaro',
'AArdvark',
'Mark',
'Álmaro',
"Alvaro",
"Áavaro"
]
console.log(names.sort((a, b) => a.localeCompare(b)))