给字符串排序 localeCompare 认识一下

localeCompare 用法

定义:用本地特定的顺序来比较两个字符串。

语法:stringObject.localeCompare(target)

参数:target——要以本地特定的顺序与 stringObject 进行比较的字符串。

返回值

如果 stringObject 小于 target, localeCompare() 返回小于 0 的数。

如果 stringObject 大于 target,localeCompare() 返回大于 0 的数。

如果两个字符串相等,localeCompare() 返回 0。

<> 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。

在日常业务中经常要把一个数组,按值类型为字符串来排序,相同的放一起显示,

let a = ['FATP', 'MD', 'FATP', 'STANDARD', 'STANDARD', '3', 'sda', null]

let b = a.sort((val1, val2) => { return String(val1).localeCompare(String(val2)) })

console.log(b)

// [ '3', 'FATP', 'FATP', 'MD', null, 'sda', 'STANDARD', 'STANDARD' ]

当数组元素是一个对象的时候,则按某个类型为字符串的属性值进行排序

let c = [
  { name: '太空编程', link: 'http://spacexcode.com' },
  { name: '前端开发笔记', link: 'http://i-fanr.com' },
  { name: '太空编程', link: 'http://doc.i-fanr.com' },
  { name: '前端开发笔记', link: 'http://wiki.i-fanr.com' }
]

let d = c.sort((val1, val2) => { return String(val1.name).localeCompare(String(val2.name)) })

console.log(d)
//////////////
[
  { name: '前端开发笔记', link: 'http://i-fanr.com' },
  { name: '前端开发笔记', link: 'http://wiki.i-fanr.com' },
  { name: '太空编程', link: 'http://spacexcode.com' },
  { name: '太空编程', link: 'http://doc.i-fanr.com' }
]

评论

还没有评论...留下你的评论!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Sidebar