Js中的数组sort()排序问题

2025-03-10 10:21:50
推荐回答(2个)
回答1:

当两个数相等时,换位置和不换位置结果都一样,所以return 0确实没什么意义,但总不能把0排除在外吧,所以其实把0作为正数或负数处理都可以。

其实你的比较函数不用搞这么复杂的,这样即可:

function compare(v1,v2){
    return v1-v2;
}

同理,如果要从大到小排列就这样:

function compare(v1,v2){
    return v2-v1;
}

回答2:

比较函数的参数 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 // 降序
} );
 
// 对应上面的解释好好想下,不难理解为什么这样写