以下是物件
p1: {
"data": [
{
"time": 5
},
{
"time": 4
}, ...
],
},
p2: {
"data": [
{
"time": 3
},
{
"time": 2
}, ...
],
},
p3: {
"data": [
{
"time": 19
},
{
"time": 17
}, ...
],
}
假设是这样子
我想让其排序是
p3, p1, p2
想根据物件里面自己的数组最新的time数字去排列外层的顺序
类似有最新消息的排最上面一样的意思
const sortable = Object.fromEntries(
Object.entries(row).sort(([, a], [, b]) => {
if (a.data[0] && b.data[0]) {
return a.data[0].time - b.data[0].time;
}
})
);
有毛病,可能我思路搞错了
有经验的老哥能否指点迷津?
你自己的答案没太大的毛病
b - a
而不是a - b
对第 2 点,要有策略,如果某个元素的
data
中不存在元素,这个是放在最前,还是最后。这里根据题意,大概应该过滤掉,就算不过滤,也应该放在最后,所以代码改为不使用
?.
和??
的代码下面这个你自己写的没毛病,所以不知道你具体遇到了啥问题。
不过用
||
可能稍微简单一点对你那个「更骚」的版本