前端:string.localeCompare

73 阅读1分钟

工资三千,每天乐呵呵

localeCompare() 方法返回一个数字,表示参考字符串在排序顺序中是在给定字符串之前、之后还是与之相同。

例子

const a='a',b='b'
a.localeCompare(b) // -1

因为a 的charCode 为97b98ab前面
所以 a.localeCompare(b) 等于-1
如果 a === b , 则为 0, 否则为1

使用场景

数组排序使用,Array.sort 方法接收一个函数,通过返回的参数(1,0,-1)进行排序,这个返回的参数和localeCompare的返回值不约而同。

// 将数组根据 isActive、code进行排序
// isActive = 1 排列前,再根据code升序排序
const test = [
  {isActive: 1, code : 'text-0-1'},
  {isActive: 0, code : 'text-0-2'},
  {isActive: 1, code : 'text-0-3'}
]
test.sort((pre,curr) => {
  // 两个isActive 不同,isActive = 1 排序在前
  if (curr.isActive !== pre.isActive) return curr.isActive - pre.isActive > 0 ? 1 : -1
  // isActive 相同,按code 升序排序
  return pre.code.localeCompare(curr.code)
})
------------------------
// 最终结果排序
[
  { 'isActive': 1, 'code': 'text-0-1' },
  { 'isActive': 1, 'code': 'text-0-3' },
  { 'isActive': 0, 'code': 'text-0-2' }
]