为了账号安全,请及时绑定邮箱和手机立即绑定

小白初级函数(sort排序)问题

小白初级函数(sort排序)问题

Ni14 2016-12-06 10:30:07
我实在是搞不懂为什么加了sortNumber函数后就可以按从小到大排列出来了,sort()函数括号中不是应该填写参数,然后给出排序的吗? 但是sort()括号中加了sortNumber函数后,我感觉这样sort函数的参数不就都变成一些a-b的值了吗?然后给这些a-b的值排序?为什么最后的排序依然是给a,b排的序?<html><body><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 />")                               //10,5,40,25,1000,1document.write(arr.sort(sortNumber))                   //1,5,10,25,40,1000</script></body></html>
查看完整描述

2 回答

已采纳
?
Lemon156

TA贡献91条经验 获得超32个赞

arrayobj.sort(sortfunction)   
sortFunction 
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,
那么元素将按照 ASCII 字符顺序进行升序排列。 

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 
负值,如果所传递的第一个参数比第二个参数小。 
零,如果两个参数相等。 
正值,如果第一个参数比第二个参数大。  

所以sort函数是根据参数函数sortfunction的返回值来判断数组的前后元素的大小

查看完整回答
反对 回复 2016-12-06
  • Ni14
    Ni14
    意思是参数函数sortNumber为sort函数提供的并不是排序对象,而是通过那些返回值为sort函数重新定义了排序规则对吗?
  • Lemon156
    Lemon156
    是的,你可以在你的sortnumber函数里把return a-b;换成return b-a;则会变成逆序排序
  • Ni14
    Ni14
    非常感谢!
?
蜂之谷

TA贡献564条经验 获得超863个赞

arrayObject.sort(sortby)

sortby    可选。规定排序顺序。必须是函数。    

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

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

若 a 等于 b,则返回 0。

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

查看完整回答
反对 回复 2016-12-06
  • 2 回答
  • 2 关注
  • 1393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信