Js localeCompare() 方法实现字符串数组排序

localeCompare()方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。

1语法:str.localeCompare(compareStr)
  • 当 引用字符串 在 比较字符串 前面时返回 -1
  • 当 引用字符串 在 比较字符串 后面时返回 1
  • 相同位置时返回 0
1'a'.localeCompare('b')  // 返回-1
2'b'.localeCompare('a')  // 返回 1
3'a'.localeCompare('a')  // 返回 0

应用

可以结合sort()对字符串数组进行排序

排序前:[‘pear’,‘apple’,‘peach’,‘banana’]

要实现的排序效果:[‘apple’,‘banana’,‘peach’,‘pear’]

1var fruits = ['pear','apple','peach','banana']
2var afterFruits = fruits.sort((a,b) => a.localeCompare(b))
3console.log(afterFruits) // ["apple","banana","peach","pear"]

中文同样可以通过该方法去实现:

1var names = ['方回','陈一','李四','陈波','张三','陈啊']
2var afterNames = names.sort((a,b) => a.localeCompare(b))
3console.log(afterNames) // ["陈啊", "陈波", "陈一", "方回", "李四", "张三"]

对象数组实现:

1var names = [{"name":"bb","sex":"男"},{"name":"aa","sex":"男"},{"name":"cc","sex":"女"},{"name":"bb","sex":"女"}]
2var afterNames = names.sort((a,b) => (a.name+a.sex).localeCompare(b.name+b.sex))
3console.log(afterNames) // [{"name":"aa","sex":"男"},{"name":"bb","sex":"男"},{"name":"bb","sex":"女"},{"name":"cc","sex":"女"}]

发布日期:2023-07-31 19:29 字数:77 用时 1分钟
tags:localeCompare js