替代 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)))