ES5数组实例方法【sort】

前言:用不好sort?

sort

  • 作用:数组排序
  • 特点:会改变原数组,返回排序好的数组
  • 重点:
    • 排序规则1:默认情况下(不传参数),sort是根据字符串的ACSII值进行排序的,这个时候,sort只能排序字符串并且是升序排列的,即就是A - Z 顺序
    • 排序规则2:如果排序数组中的元素不是字母字符串,那么就需要通过给sort传入排序规则函数来指定排序规则
    • localeCompare()方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。

1.排序字母

const names_en = ['Durant', 'Curry', 'Butler', 'Kobe', 'Jordan', 'James']
// 1.默认情况
names_en.sort()
console.log(names_en) // 升序 A - Z 打印:['Butler', 'Curry', 'Durant', 'James', 'Jordan', 'Kobe']

// 降序排序方法(1)
console.log(names_en.reverse()) // 打印:['Kobe', 'Jordan', 'James', 'Durant', 'Curry', 'Butler']

// 降序排序方法(2)
names_en.sort((name1, name2) => name2.localeCompare(name1))
console.log(names_en) // 打印:['Kobe', 'Jordan', 'James', 'Durant', 'Curry', 'Butler']

2.排序中文

const names_zn = ['杜兰特', '库里', '巴特勒', '科比', '乔丹']

// 排序中文
names_zn.sort((name1, name2) => name1.localeCompare(name2))
console.log(names_zn) // ['巴特勒', '杜兰特', '科比', '库里', '乔丹']

// 降序排序
names_zn.sort((name1, name2) => name2.localeCompare(name1)) 
console.log(names_zn) //['乔丹', '库里', '科比', '杜兰特', '巴特勒']

3.排序数字

const nums = [45, 19, 32, 7, 23]

// 升序排序
nums.sort((a, b) => a - b)
console.log(nums) // [7, 19, 23, 32, 45]

// 降序排序
nums.sort((a, b) => b - a)
console.log(nums) // [45, 32, 23, 19, 7]

4.排序对象

// 排序对象
const boys = [
    {
        name: '杜兰特',
        height: 200
    },
    {
        name: '库里',
        height: 192
    },
    {
        name: '巴特勒',
        height: 205
    },
    {
        name: '科比',
        height: 233
    }
]

// 升序排序
boys.sort((b1, b2) => b1.height - b2.height)
console.log(boys)
// {name: '库里', height: 192}
// {name: '杜兰特', height: 200}
// {name: '巴特勒', height: 205}
// {name: '科比', height: 233}

// 降序排序
boys.sort((b1, b2) => b2.height - b1.height)
console.log(boys)
// {name: '科比', height: 233}
// {name: '巴特勒', height: 205}
// {name: '杜兰特', height: 200}
// {name: '库里', height: 192}

水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值