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' } ]