js排序问题为什么使用了下面的cmpare方法就实现了根据值的大小排序

vararr1=[10,2,4,1,6,22];;functioncompare(vaule1,vaule2){if(vaule1<vaule2){return-1;}e... var arr1=[10,2,4,1,6,22];
;
function compare(vaule1,vaule2){
if (vaule1<vaule2) {
return -1;
}
else if(vaule1>vaule2){
return 1;
}
else{
return 0;
};

}

arr1.sort(compare);
alert(arr1);
展开
 我来答
bfdnyj
2015-01-18 · TA获得超过469个赞
知道小有建树答主
回答量:217
采纳率:100%
帮助的人:133万
展开全部
因为 arr1 是一个数组对象(即Array),而数组对象具有一个排序方法sort(),该方法可以接受一个比较元素次序的排序函数,compare正是这样的一个排序函数。所以可以实现排序。
排序函数要接受两个参数,这两个参数代表数组中的两个元素,排序函数根据这两个元素的次序正确否返回修正值:-1表示次序错了(应该把第二个参数排列在第一个参数之前),0表示次序无所谓(第一个参数在前也行,第二个参数在前面也行),1表示次序正确(第一个参数在前,第二个参数在后)
追问
为什么返回-1或者1就可以判断啊不是太明白
追答
换个方法给你解释一下吧:
设计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);

你也可以自己写一些排序函数试试,比如按字符串长度排序的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式