关于sort方法的疑问?急急急

关于sort方法的疑问?急急急

在sort()里面封装的那个函数,function(a,b){retrun a-b;},这个函数能解释一下原理吗?????

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

sort() 方法用于对数组的元素进行排序。
语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。
注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

例一、我们将创建一个数组,并按字母顺序进行排序:

<script type="text/javascript">
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    document.write(arr + "<br />")
    document.write(arr.sort())
</script>

输出:

George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas

例二:我们将创建一个数组,并按顺序进行排序:

<script type="text/javascript">
    var arr = new Array(6)
    arr[0] = "10"
    arr[1] = "5"
    arr[2] = "40"
    arr[3] = "25"
    arr[4] = "1000"
    arr[5] = "1"
    document.write(arr + "<br />")
    document.write(arr.sort())
</script>

输出:

10,5,40,25,1000,1
1,10,1000,25,40,5

请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

<script type="text/javascript">
    function sortNumber(a,b){
    return a - b
    }
    var arr = new Array(6)
    arr[0] = "10"
    arr[1] = "5"
    arr[2] = "40"
    arr[3] = "25"
    arr[4] = "1000"
    arr[5] = "1"
    document.write(arr + "<br />")
    document.write(arr.sort(sortNumber))
</script>

输出:

10,5,40,25,1000,1
1,5,10,25,40,1000

这里可以看出,如果按升序排列,那么方法为:

function sortNumber(a,b){
    return a - b
}

如果是按照降序排列则为:

function sortNumber(a,b){
    return b - a
}

这就是原理。我们的老师都有很用心,很负责任哦!你酱紫说,老师会伤心哒~T_T,希望可以帮到你,如果还有什么不理解的,可以再次提问,直到帮你解决问题为止,祝学习愉快!

  • 慕的地2368129 提问者 #1
    受徒儿一拜!:)
    2017-08-31 16:40:39
  • 慕的地2368129 提问者 #2
    升序a-b;这个有没有具体的代码,比如if(a<b)return -1?
    2017-08-31 17:39:48
  • 卡布琦诺 回复 提问者 慕的地2368129 #3
    这个不同的效果有不同的写法,建议给你根据之前我给的原理自己进行尝试去写一个效果(要锻炼自己的实际操作能力和编程思维哦~),在写效果的过程中遇到不会的问题再次提问,助教老师会帮助你解答的哦!
    2017-08-31 17:44:47
小丸子爱吃菜 2017-08-29 19:18:13

比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。该方法是sort方法中封转好的一个函数,学会熟练使用即可哦~

祝学习愉快!

  • 提问者 慕的地2368129 #1
    我知道是封装好的,我问的是原理,老师你在敷衍我吗?
    2017-08-29 20:10:38
qq_a_40 2017-08-29 18:26:10

sort()封装的函数是针对数值进行排序用的,假设的是a<b,按照冒泡理解,任意两个数比较,a<b,位置不变,否则调换位置,直到得到的结果是升序;  这是我的理解,也不知道对不对,先记住这么用吧,看老师怎么回答的!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师