javascript - 按降序对数字进行排序,但以 `0` 开头

标签 javascript arrays sorting

我在 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]

有谁知道如何解决这个问题吗?

最佳答案

您可以按 ba 的差值排序(降序排序)并取 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/

相关文章:

javascript - 将异步脚本移动到页面底部有什么好处吗?

C 如何将命令传递的字符串转换为数组

bash - 我该如何加快速度?

c++ - 插入到排序位置链表

javascript - Codeigniter 购物车使用 jQuery 删除单个元素

javascript - 请求模块 node.js : How add query to GET request?

javascript - 来自 mongodb 的 Angular GET 返回 [object Object]

c - 是否可以在 C 中创建泛型函数?

javascript - 如何拆分字符串数组并返回具有键/值对的单个对象

java - 一副牌 - 检查顺子