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

一知半解,函数function sortNum()

()里面的a,b是什么?函数也没在下面调用啊?

正在回答

5 回答

看了些资料,初浅的理解可以这样:

sort()函数,要实现特定排序的话,函数要求提供一个(比较函数做为)参数,该(函数)参数 要有两个比较值,而且需要返回值,用于说明这两个值的相对顺序的数字。这个比较函数的两个参数可以是 a 和 b,或者 x和y ,是象征意义,至于sort()函数拿到这个参数(比较函数)怎么内部处理,是系统内部的事,我们暂且不用关心,知道这么用就可以了


0 回复 有任何疑惑可以回复我~

两位的回答都有可取的地方,第一位的简单明了,第二位略显专业。。。

0 回复 有任何疑惑可以回复我~

唉,楼上说的有错误。

“当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换”这句话绝对是错的。


arrayObject.sort(sortby) 

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

返回值

对数组的引用。请注意,数组在原数组上进行排序,不生成副本(也就是说原数组会发生改变)。

说明

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

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

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

若 a 等于 b,则返回 0。

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


<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


2 回复 有任何疑惑可以回复我~
#1

menghuanbaolei

嘻嘻,为什么总感觉在哪里看过
2014-12-29 回复 有任何疑惑可以回复我~

sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递 给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。这里是涉及到算法的,你可以在网上搜一些算法题自己先了解一下算法

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468044    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

一知半解,函数function sortNum()

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信