修复这个三重嵌套三元操作符的最佳方法是什么?



我有一个对对象数组进行排序的代码片段。每个对象看起来像这样:

{
"id": "60ff9eb7c793c6197dae5d42",
"matches": 1,
"timestamp": "2021-07-27T05:46:52.469Z",
"likes": 23
}

我有一个三重嵌套的三元表达式,它首先按匹配排序,然后按喜欢排序,然后按时间戳排序。代码如下:

bestMatches.sort((a, b) =>
a.matches < b.matches
? 1
: a.matches === b.matches
? a.likes < b.likes
? 1
: a.likes === b.likes
? a.timestamp.getTime() < b.timestamp.getTime()
? 1
: -1
: -1
: -1
);

把这个转换成"good"最好的方法是什么?代码?在这种情况下,我很难使用if/else,而且我知道嵌套三元表达式是不好的做法。和往常一样,如果你花时间回答或试图回答这个问题,谢谢你的时间。

相减得到matches,likes,然后是时间的差值

bestMatches.sort((a, b) => (
(b.matches - a.matches) ||
(b.likes - a.likes) ||
(b.timestamp.getTime() - a.timestamp.getTime())
));

最新更新