当两个数相等时,换位置和不换位置结果都一样,所以return 0确实没什么意义,但总不能把0排除在外吧,所以其实把0作为正数或负数处理都可以。
其实你的比较函数不用搞这么复杂的,这样即可:
function compare(v1,v2){
return v1-v2;
}
同理,如果要从大到小排列就这样:
function compare(v1,v2){
return v2-v1;
}
比较函数的参数 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 // 降序
} );
// 对应上面的解释好好想下,不难理解为什么这样写