javascript - 如何根据新值仅对已排序的二维数组的特定部分进行排序。但前提是第一个排序值在 Javascript 中匹配

标签 javascript arrays

我有以下问题: 我有一个包含对象的数组。 每个对象都有一个分数和一个等级,如下所示:

    [
        { "score": 20, "rank": 12 }, 
        { "score": 20, "rank": 7 },
        { "score": 34, "rank": 4 }
    ]

首先,我按分数降序排列并将其存储到二维数组中。

    [34, 4]
    [20, 12]
    [20, 7]

但是现在,如果相同分数出现两次或更多次,我希望将它们按排名排序。因此,无论排名最低的是什么,都会有一个较小的索引号。结果:

    [34, 4]
    [20, 7]
    [20, 12]

我真的不知道该怎么做,我做了一些方法,但它们是一种不好的方法。

最佳答案

您可以检查两个对象的score 的差异是否为0 然后返回rank 的差异,否则返回 的差异得分

const arr = [
    { "score": 20, "rank": 12 }, 
    { "score": 20, "rank": 7 },
    { "score": 34, "rank": 4 }
]

let res = [...arr]
             .sort((a,b) => (b.score - a.score) || (a.rank - b.rank))
             .map(x => [x.score,x.rank]);
console.log(res)

关于javascript - 如何根据新值仅对已排序的二维数组的特定部分进行排序。但前提是第一个排序值在 Javascript 中匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56811043/

相关文章:

javascript - 当我拖动一个元素时,react-sortable-hoc 列表消失

javascript - 如何使用 angularjs webapp 渲染登陆页面?

javascript - Windows 边栏环境中的代码分析

javascript - 如何在 Javascript 中动态插入和访问对象内的对象?

javascript - 如何从两个异步函数中获取变量的值

javascript - 将数组动态转换为树状结构

C# 变长字符串数组

javascript - 使用 JSX 和 React Native 的动态标签名称

javascript - 从 hotmail 页面提取电子邮件正文

php - 值在数组中的 MySQL SELECT 语句