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()排序问题的主要内容,如果未能解决你的问题,请参考以下文章

js中的数组对象排序(方法sort()详细介绍)

C++中有专门给对象数组排序的类方法吗,就像Java中的sort

求C语言编程编写函数sort:对数组a中的数进行从小到大排序

JS-sort

js对数组中的数字排序

js sort() 数字排序 不太理解