大家帮我理解下js中数组的sort方法

hexinping123 2012-01-06 09:48:31
数组的sort()方法首先会调用每个数组项的toString()方法,然后比较得到的字符串,下面举例说明

var values=[1,2,,3,4,5]
values.sort();
alert(values) //0,1,10,15,5



如果对于数字数组的话,我想得到的结果是“0,1,5,10,15”所以用了下面这个函数来比较

functiion compare(value1,value2){
if(value1<value2){
return -1;
}
else if(value1>value2)
{
return 1;
}
else
{ return 0; }

}

然后调用这个函数,完整的代码是下面这样

var values=[1,2,,3,4,5]
values.sort(compare);
alert(values) //0,1,5,10,15

我的问题: values.sort(compare);这句改怎么理解,还有那个compare函数理解有点困难,希望大家可以帮我解释下




...全文
47 点赞 收藏 6
写回复
6 条回复
laidezhong 2012年01月07日
var values=[1,2,10,3,4,5,0];
values.sort(function(a,b){return a-b})
回复 点赞
孟子E章 2012年01月07日
values.sort(compare);
就是按照你制定的比较规则进行比较,
compare(a,b)你可以写成别的比较方法,例如
function compare(a,b)
{
if(a.toString().length>b.toString().length)
return 1
else if(a.toString().length==b.toString().length)
return 0
else
return -1
}

比较规则自己定义
回复 点赞
EEXXTTJJSS 2012年01月07日
[Quote=引用 2 楼 thedolphin 的回复:]

sort() 方法可以接受一个比较方法作为参数
数组会根据参数方法的规则判断数组每项的大小,然后排序
[/Quote]

+1 如果默认不传参数就会按照字典的顺序取排
回复 点赞
色拉油 2012年01月06日
sort() 方法可以接受一个比较方法作为参数
数组会根据参数方法的规则判断数组每项的大小,然后排序
回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告