日期:2014-05-18  浏览次数:20674 次

jquery 的 sort 函数问题
members = [45, 23, 12, 34];
members = members.sort(function(a, b){
return a-b;
);
这里面a-b为升序,b-a降序排列;但a,b值具体是多少,取的是什么值呢?还是说这是固定的一种写法而已?
jquery function

------解决方案--------------------
升降是根据a-b的结果值判断的,为正就是升,为负就是降。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

排序肯定要比较两个数字的大小啊,sort方法内部实现了冒泡排序或者其他排序算法,
function(a, b){
return a-b;
)
这个函数只是定义了排序的规则,在sort方法中会调用这个函数,并传入集合中的两个值精细比较,对应了形参a和b

如果这个集合的内容是{1,2,3,4,5....}那么在排序的时候,是对集合里面的元素依次对比吗?还是只取前两个元素1、2,然后分别付给a、b这两个参数进行比较?我刚接触jq,所有有些东西还不是很理解。谢谢啊!!

大学c语言中最简单的冒泡排序没学过吗

我不理解是,决定是升序还是降序是不是由a-b来决定呢,我看到网上一般来说是a-b为升序,b-a为倒序,如果冒泡依次进行比较的话,那a-b的返回值是正是负是会变的!还是说决定升序降序a-b这是这么个写法,比如:a-b就代表升序,b-a就代表降序!我说的有点乱,您理解我说的意思吗?


应该这么理解:
函数function(a, b){
  return a-b;
)
是用来定义比较规则的。

为了方便描述,我们现在给这个函数取个名字
function rule(a, b){
  return a-b;

该函数返回值是正是负,表示的是升序还是降序,是由调用这个函数的调用者sort决定的。
比如:
if(rule(members[0],members[1])>0){
   交换members[0],members[1]位置
}
比较规则是由你自己来定的,你也可以写成
function rule(a, b){
  return 1000*a-200*b;

只要它是符合你业务需求。

这个跟设计模式中的策略模式很类似,外层的大的算法已经定下来了,我只要传送一个运算的规则就行了。