jquery 的 sort 函数问题
members = [45, 23, 12, 34];
members = members.sort(function(a, b){
return a-b;
);
这里面a-b为升序,b-a降序排列;但a,b值具体是多少,取的是什么值呢?还是说这是固定的一种写法而已?
------解决方案--------------------升降是根据a-b的结果值判断的,为正就是升,为负就是降。
------解决方案--------------------
应该这么理解:
函数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;
)
只要它是符合你业务需求。
这个跟设计模式中的策略模式很类似,外层的大的算法已经定下来了,我只要传送一个运算的规则就行了。