javascript对数组的排序

<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 />")
document.write(arr.sort(sortNumber))

</script>

</body>
</html>

在function sortNumber(a, b)
{
return a - b
}这个代码中,返回值怎么会是a-b呢??

其实这个函数只是一个形式,如果定义成这样:
function sortNumber(b,a){
return b-a;
}
排序出来也是升序的。其与
function sorNumber(a,b){
return a-b;
}
的效果是一样的。
也就是说对于这个传入的函数,如果返回用第一个参数减去第二个参数,那么是升序排列;
如果返回用第二个参数减去第一个参数,那么是降序排列。
如果不传入函数,那么是按照字符串的字典顺序升序排列。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-28
javascript的数组有sort方法。按照数值的大小对数字进行排序,必须使用一个排序函数:a代表数组的前一位,b代表数组的后一位。
var arr = [1,2,3,5,2,5,3,6,2,6,2,6,2,5,9,6,8,54,3,6,8];
arr.sort(function(a,b){return a-b});
这样是升序排列。
如果希望降序排列,就写成return b-a;

本回答被网友采纳
第2个回答  2011-05-24
是这样的,在Array对象的sort(0方法之中,封装了关于如何排序的参数,这个参数其实是一个函数,就是你这里的sortNumber(),这个返回值不是返回给用户的,是返回给sort()方法的,让其按照返回值的不同来决定如何排序。
第3个回答  推荐于2016-01-02
arr.sort(sortNumber)
arr.sort():系统函数,处理arr数组相邻两个元素。
这里sortNumber是自定义的排序条件。
因为sort()函数的排序条件是:参数大于0,arr的相邻两个元素交换位置;
参数小于0,arr的相邻两个元素不交换位置;
参数等于0,arr的相邻两个元素大小相等;所以sortNumber自定义函数必须返回一个数值。
(a-b)表示相邻两个元素按照前一个元素减去后一个元素.并返回这个数值,sort()函数根据这个数值的正负来确定arr当前两个元素是否交换位置。
反之:b-a就变成倒序了。这就意味这b-a表示相邻两个元素按照后一个元素减去前一个元素.并返回这个数值,sort()函数根据这个数值的正负来确定arr当前两个元素是否交换位置。本回答被提问者采纳
相似回答