码渣也难当
2014-12-22 16:39
()里面的a,b是什么?函数也没在下面调用啊?
看了些资料,初浅的理解可以这样:
sort()函数,要实现特定排序的话,函数要求提供一个(比较函数做为)参数,该(函数)参数 要有两个比较值,而且需要返回值,用于说明这两个值的相对顺序的数字。这个比较函数的两个参数可以是 a 和 b,或者 x和y ,是象征意义,至于sort()函数拿到这个参数(比较函数)怎么内部处理,是系统内部的事,我们暂且不用关心,知道这么用就可以了
两位的回答都有可取的地方,第一位的简单明了,第二位略显专业。。。
唉,楼上说的有错误。
“当函数返回值为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
sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递 给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。这里是涉及到算法的,你可以在网上搜一些算法题自己先了解一下算法
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题