大家帮我理解下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函数理解有点困难,希望大家可以帮我解释下




...全文
97 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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() 方法可以接受一个比较方法作为参数
数组会根据参数方法的规则判断数组每项的大小,然后排序

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧