【问题标题】:alernative to normalize() for sorting an array用于对数组进行排序的 normalize() 的替代方法
【发布时间】:2019-04-02 18:17:42
【问题描述】:

我有一个应用程序按字母顺序对一组扬声器进行排序。一些演讲者的名字在第一个字母上有特殊字符,例如“Á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?

【问题讨论】:

  • 您是否有理由不使用String.localeCompare 进行排序?
  • 嗯我不知道这种方法。现在会调查它谢谢。您将如何将它与 sort() 方法一起使用?
  • 我在答案中发布了一个示例。希望对您有所帮助。

标签: javascript arrays normalize


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 2018-07-11
    • 1970-01-01
    • 2018-05-16
    • 2010-09-07
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多