我有以下问题: 我有一个包含对象的数组。 每个对象都有一个分数和一个等级,如下所示:
[
{ "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/