js数组排序踩的一个坑

我有一个简单的一维string数组:

var arr = ["M","U","Z","H","B","K","S","N","T","C","E","J","I","T","I","R","P","R","C","C","S","H","I","C","P","M","D","H","B","N","G","B","A"];

想对其进行a-z的顺序排序

arr.sort(function(v1,v2){return v1>v2});

//["P", "A", "R", "M", "B", "K", "B", "G", "B", "C", "E", "J", "I", "H", "I", "D", "M", "H", "C", "C", "C", "H", "I", "N", "N", "P", "R", "S", "S", "T", "T", "U", "Z"]

图片描述

我操作错误了?哪里出了问题,完全蒙了 ==!

我把字母转成小写,一样的。

我把字母全部转成unique的编码看一下:

arr.map(function(v){
    //将字符转成unique
    return v.charCodeAt(0);
}).sort(function(v1,v2){
    return v1>v2;
}).map(function(v){
    //在讲unique转成字符
    return String.fromCharCode(v);
});

还不行,百思不得姐。

最后查询文档得结果:

sort返回值有3种,

1:正序排序
-1:倒叙排序
0:保持不变

最后:成功解决。

arr.sort(function(v1,v2){
    return v1>v2?1:-1;
})

总结:不知道为什么会掉入这个坑里。主要还是自己大意了,经常用filter,map,forEach,给弄混淆了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值