查漏补缺之‘25’>'100'为true引发的首字母排序问题

感觉自己js掌握的很不扎实,需要复习以下,所以就去看w3c的教程,看了字符串和数组的方法,突然意识到,之前笔试遇到的这个题,当时选对了,因为我想最不可能的就是最可能的(哈哈哈),但是也暴露了自己真的很多知识都不太牢固。
然后在看到数组的sort方法时,突然想到这个题了,
在这里插入图片描述当然本人对sort函数也记得很模糊了,只知道它时拿来排序的。
图片中提到用比值函数来修正,

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b}); 

sort中传入比值函数,函数的返回值无外乎正数、负数、0,sort会根据返回值来确定排序,所以我们就可以定义一个自己的排序函数,然后把它给封装起来。

var arr4=[{name:'Zann',age:'31'},{name:'Jack',age:'59'},{name:'Rita',age:'20'}]
//我想按名字首写字母顺序排序
arr4.sort(
        (a, b) =>{
            return a['name'] < b['name'] ? -1 : a['name'] > b['name'] ? 1 : 0
        }
    );
console.log(arr4);//排序成功
//封装这个比值函数,传入排序的key
function sortBy(key){
     return (a,b)=>{
         return   (a[key]<b[key])? -1:(a[key]>b[key])? 1:0
     }
}
console.log(arr4.sort(sortBy('name')));

生活中倒是经常见到按名字首写字母排序的,汉字怎么办呢?于是我百度了一下,得知这样一个方法:
在这里插入图片描述a.localeCompare(b),比较a和b返回值也是1,-1,0这些
在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值