我在 JavaScript 方面遇到了一个挑战,我已经尝试解决了一段时间了。
考虑这个数组:
let arr = [0, 1, 0, 2, 0, 3, 0, 4, 0, 5];
我必须输出这个结果:
arr = [0, 0, 0, 0, 0, 5, 4, 3, 2, 1]
我按照这条逻辑线将零放在前面,调整索引值:
arr.sort((x, y) => {
if (x !== 0) {
return 1;
}
if (x === 0) {
return -1;
}
return y - x;
});
但我坚持这个结果:
arr = [0, 0, 0, 0, 0, 1, 2, 3, 4, 5]
有谁知道如何解决这个问题吗?
最佳答案
您可以按 b
和 a
的差值排序(降序排序)并取 Number.MAX_VALUE
,对于像零这样的虚假值。
这个:
Number.MAX_VALUE - Number.MAX_VALUE
等于零。
let array = [0, 1, 0, 2, 0, 3, 0, 4, 0, 5];
array.sort((a, b) => (b || Number.MAX_VALUE) - (a || Number.MAX_VALUE));
console.log(...array);
关于javascript - 按降序对数字进行排序,但以 `0` 开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58933996/