Js中的数组sort()排序问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js中的数组sort()排序问题相关的知识,希望对你有一定的参考价值。
var b = [1,30,15,20];
function compare(v1,v2)
if ( v1<v2 )
return -1;
else if ( v1>v2 )
return 1;
else
return 0;
b.sort(compare);
alert(b);
在js 数组中 sort()可以传入比较函数作为参数来排序数组里的数据
但是只有当函数返回正数的时候才会改变两个数据的位置,而当两个项相等时也不需要改变位置。
那么return 0有什么意义呢?
当两个数相等时,换位置和不换位置结果都一样,所以return 0确实没什么意义,但总不能把0排除在外吧,所以其实把0作为正数或负数处理都可以。
其实你的比较函数不用搞这么复杂的,这样即可:
function compare(v1,v2)return v1-v2;
同理,如果要从大到小排列就这样:
function compare(v1,v2)return v2-v1;
参考技术A
比较函数的参数 v1 和 v2 代表数组里的两个元素
如果 v1 小于 v2,排序后的数组 v1 在 v2 前面,此时返回一个负数 (即上面的 return -1)
如果 v1 等于 v2,排序后两者位置不变,此时返回 0 (即上面的 return 0)
如果 v1 大于 v2,排序后 v1 在v2 后面, 返回一个正数 (即上面的 return 1)
//比较函数一般简写成:arr.sort( function(a,b)
return a-b // 升序
);
arr.sort( function(a,b)
return b-a // 降序
);
// 对应上面的解释好好想下,不难理解为什么这样写
以上是关于Js中的数组sort()排序问题的主要内容,如果未能解决你的问题,请参考以下文章
C++中有专门给对象数组排序的类方法吗,就像Java中的sort