【发布时间】:2019-11-19 12:20:22
【问题描述】:
我在 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]
谁有解决这个问题的建议?
【问题讨论】:
-
能保证没有负数吗?
-
最后一行切换到
return x - y;不解决吗? -
在 JavaScript 中计算和删除零、正常排序剩余元素是否有效? (没有自定义比较器,因此希望 JS 引擎可以使用内置的数字排序功能)。然后将正确数量的零添加到结果中。如果有很多零,则在排序之前删除它们会产生较小的问题。还是一次性将零交换到数组的开头,然后对数组的尾部进行排序?
-
这甚至可以到达
return y - x;吗?即使在javascript中,我也想不出任何既不是===0也不是!==0的东西。
标签: javascript arrays sorting