看到 网上 有个大佬 写了这样一个算法
function move(nums) {
nums.sort((a, b) => b ? 0 : -1)
return nums
}
var nums = [0, 2, 0, 1, 5]
var res = move(nums)
console.log('res: ', res) //[2, 1, 5, 0, 0]
相当于直接把 0
放到了最后 其他相对顺序不变
平时 只用到了 sort
的排序功能 这种真没见过
看了 https://developer.mozilla.org... 的说明
(而且我发现第一次比较的时候 a 是 2
, b 是 0
,是反着比较的吗...)实在没大搞懂
请大佬来回复一下,越详细越好哈哈哈哈
可以这么理解,假如sort的回调是下面的函数
那么sort的时候a和b的相对位置是否交换,取决于x的值
x>=0时,a和b的相对位置不交换
x<0时,a和b交换位置