发布网友 发布时间:2022-07-03 05:12
共1个回答
热心网友 时间:2022-07-06 14:47
因为 arr1 是一个数组对象(即Array),而数组对象具有一个排序方法sort(),该方法可以接受一个比较元素次序的排序函数,compare正是这样的一个排序函数。所以可以实现排序。追答换个方法给你解释一下吧:
设计sort方法的人规定了这个方法可以接受一个排序函数作排序的原则,sort根据这个原则进行排序。sort将多次调用你提供给他的这个排序函数,从而确定数组中哪个元素应该放在前面,哪个元素应该放在后面。排序函数必须接受两个参数(a,b),并对这两个参数进行比较,如果a应该排在b之后则返回一个正数,如果a应该排在b之前则返回一个负数,如果a在前也行b在前也行就返回0。
请看下面的三个例子
// 首先定义三个排序函数
function SmallToBig(v1,v2){ return v1-v2; } // 按从小到大排序
function BigToSmall(v1,v2){ return v2-v1; } // 按从大到小排序
function unitsSmallToBig(v1,v2){ return v1 % 10 - v2 % 10; } // 按个位数从小到大排序
// 接下来定义一个数组对象
var arr1=[10,2,4,1,6,22];
// 然后按照不同的排序函数对其进行排序
arr1.sort(SmallToBig); // 按从小到大排序
alert(arr1);
arr1.sort(BigToSmall); // 按从大到小排序
alert(arr1);
arr1.sort(unitsSmallToBig); // 按个位数从小到大排序
alert(arr1);
你也可以自己写一些排序函数试试,比如按字符串长度排序的。