求解javascript 精髓的一段代码

brakeout 2010-02-08 05:33:48
var n =[3,4,5,6,23,34,532,1];
n.sort(); // 结果[1,23,3,34,4,5,532,6] 错误
n.sort(function(a,b){return a-b ;}); // 结果 [1,3,4,5,6,23,34,532] 正确
上面那个我理解,下面的那种书写方式是怎么理解的?
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rjzou2006 2010-02-08
  • 打赏
  • 举报
回复
传入



的是对象啊。
KK3K2005 2010-02-08
  • 打赏
  • 举报
回复
n.sort(function(a,b){return a-b ;}); // 结果 [1,3,4,5,6,23,34,532] 正确

明确传入一个 比较函数 来返回对2个元素之间大小的比较结果
数组排序时候 对元素的大小比较就由 传进的函数来控制 也就是可以按自己的逻辑来排序元素
Alien 2010-02-08
  • 打赏
  • 举报
回复
哈哈,楼主同学,您应该这么来理解哦:
数组Array的sort(fn)方法是有参数的,该参数表示排序方式,也是一个排序依据,可以按小到大排,也可以按大到小排。上面的代码些完整的话,应该是这样的:

n.sort(function(a,b){
if(typeof(a) == "number" && typeof(b) == "number"){
return (a > b) ? 1 : (a < b ? -1 : 0);
}else{
return a.localeCompare(b);
}
});
brakeout 2010-02-08
  • 打赏
  • 举报
回复
大致能够理解,肯定是制定排序的规则。但是sort()函数具体是怎么执行的呢?
cloudgamer 2010-02-08
  • 打赏
  • 举报
回复
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
xuld 2010-02-08
  • 打赏
  • 举报
回复
sort接受函数


函数返回bool值

参数a,b表示比较的2数,返回true a前,否则b。
草根醉秋意 2010-02-08
  • 打赏
  • 举报
回复
http://w3school.com.cn/js/jsref_sort.asp

87,909

社区成员

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

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