欢迎,感谢你能来...

找到回家的路:
首页 > 前端分享 > JS/JQuery > js中sort() 数字排序问题
JS/JQuery

js中sort() 数字排序问题

作者:Fanda 发布日期:2016-05-21 围观人数:21258人

简介

语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。 sort() 方法用于对数组的元素进行排序。 如果调用该方法时没有使用参数,将按字母顺序对数组 […]



语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。


sort() 方法用于对数组的元素进行排序。


如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,


首先应把数组的元素都转换成字符串(如有必要),以便进行比较。


如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。


比较函数应该具有两个参数 a 和 b,其返回值如下:


若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。


若 a 等于 b,则返回 0。


若 a 大于 b,则返回一个大于 0 的值。

var arr = [23,12,1,34,116,8,18,37,56,50];
alert(arr.sort();



返回:[1, 116, 12, 18, 23, 34, 37, 50, 56, 8]

  • 上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:
var arr = [23,12,1,34,116,8,18,37,56,50];
function sequence(a,b){
    if (a>b) {
        return 1;
    }else if(a<b){
        return -1
    }else{
        return 0;
    }
}
console.log(arr.sort(sequence));



返回:[1, 8, 12, 18, 23, 34, 37, 50, 56, 116]

  • 当然也可以把排序函数写到sort()方法里面:
var arr = [23,12,1,34,116,8,18,37,56,50];
var arr2 = arr.sort(function(a,b){
if (a>b) {
    return 1;
}else if(a<b){
    return -1
}else{
    return 0;
}



返回:[1, 8, 12, 18, 23, 34, 37, 50, 56, 116]

  • 也可以简化成这样的写法:


因为:若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。


若 a 等于 b,则返回

0



若 a 大于 b,则返回一个

大于0

的值

var arr = [23,12,1,34,116,8,18,37,56,50];
function sequence(a,b){
return a - b;
}
console.log(arr.sort(sequence));



返回:[1, 8, 12, 18, 23, 34, 37, 50, 56, 116]

  • 关于字母顺序进行排序 就简单多了,直接用sort()方法就OK了:
var arr = ['fanda','banner','find','zoom','index','width','javascript'];
console.log(arr.sort());



返回:[“banner”, “fanda”, “find”, “index”, “javascript”, “width”, “zoom”]

Tags:

转载 云中不知处博客欢迎分享,转载请说明文章出处“ 来源云中不知处博客 http://www.saymiss.com/archives/132 “。
很赞哦!( 0)

( 1 )个小伙伴在吐槽

  1. 徐奥

    写得很详细,学习了

    回复   

访客评论


站点统计

  • 更新时间:2020-05-06 07:26
  • 文章总数:32
  • 评论总数:38
  • 标签总数:24
  • 运行时间: 511
我的微信
  • 网站赞助:阿里云、腾讯云、百度云、奇虎360、网易云音乐、音悦台、京东商城,哦以上这些都没有。
  • 网站制作:页面设计:Fanda;前端开发:Fanda;后台功能:Fanda;主题开发:Fanda;技术支持:Fanda。我就是天才...
免责声明
  • 1、本站个人博客模板,均为Fanda本人设计,可供个人学习和使用,未经许可不得用于任何商业目的。
  • 2、本站部分文章来自网络,请您放心,所有转载文章内容皆保留来源链接,如本站有著作权属于你的文章内容,而本站并未放上链接或有其他原因侵权,请E-mail: fzh2812@163.com,我会在48小时内删除相关内容,敬请谅解!
碎言碎语
  • 三生有幸遇见你,纵使悲凉也是情

    2020-05-07
  • 忍一时风平浪静,退一步越想越气

    2020-03-21
  • 最近996

    2019-11-09
  • 最近有点忙,996啊

    2019-07-29
  • 端午3天我就没下过楼,出过门

    2019-06-09
  • 今天不小心,谈成了一笔小生意

    2019-05-26
  • 今天为公司推荐一个java后台

    2019-05-24

©2019 云中不知处 Powered by WordPress 文章归档 免责声明 网站地图 百度统计