替代normalize()对数组进行排序

时间:2018-10-29 18:41:57

标签: javascript arrays normalize

我有一个应用程序,可以按字母顺序对发言者进行排序。某些发言者的名字的第一个字母带有特殊字符,例如“Á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()的替代方法还是有人知道这种方法的合法填充好?

1 个答案:

答案 0 :(得分:1)

localeCompare通常用于对字符串进行排序。它具有lots of options用于本地化或排序数字,并且受IE支持:

let names = [
    'Álvaro',
    'AArdvark',
    'Mark',
    'Álmaro',
    "Alvaro",
    "Áavaro"
]
console.log(names.sort((a, b) => a.localeCompare(b)))