工资三千,每天乐呵呵
localeCompare() 方法返回一个数字,表示参考字符串在排序顺序中是在给定字符串之前、之后还是与之相同。
例子
const a='a',b='b'
a.localeCompare(b) // -1
因为a 的charCode 为97,b为98,a在b前面
所以 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' }
]