【发布时间】:2021-06-11 23:32:41
【问题描述】:
我非常坚持对我的对象数组进行排序。
const users = useMemo(() => [userDetails, ...otherParticipants]
.sort((a, b) => b.isTyping - a.isTyping)
.sort((a, b) => b.liveDetails.status - a.liveDetails.status)
.sort((a, b) => b.hasRaisedHand - a.hasRaisedHand)
.sort((a, b) => b.isOnline - a.isOnline)
, [userDetails, otherParticipants])
我尝试了链式排序,但效果不错。然后我尝试了有条件的,但似乎没有任何东西可以处理我需要排序的所有内容。我真的很感激一些指导。抱歉发了这么长的帖子……
[
{
isOnline: true,
hasRaisedHand: false,
isTyping: false,
liveDetails: {
status: 'pending',
camera: false,
mic: false,
},
},
{
isOnline: true,
hasRaisedHand: false,
isTyping: false,
liveDetails: {
status: 'active',
camera: false,
mic: false,
},
},
{
isOnline: false,
hasRaisedHand: false,
isTyping: false,
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
{
isOnline: true,
hasRaisedHand: false,
isTyping: true,
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
{
isOnline: true,
hasRaisedHand: true,
isTyping: false,
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
]
这是我需要对象排序的顺序:
isTyping: true
status: 'active'
status: 'pending'
hasRaisedHand: true
isOnline: true
isOnline: false
示例:具有isTyping: true 键的对象应位于具有status: 'pending' 的对象之前。
示例 2:如果一个对象有status: 'pending',但也有isTyping: true,它应该在数组的前面。
这是对象需要排序的顺序,但我似乎根本无法让它工作。
这将是我需要的顺序:
[
{
isOnline: true,
hasRaisedHand: false,
**isTyping: true,**
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
{
isOnline: true,
hasRaisedHand: false,
isTyping: false,
liveDetails: {
**status: 'active',**
camera: false,
mic: false,
},
},
{
isOnline: true,
hasRaisedHand: false,
isTyping: false,
liveDetails: {
**status: 'pending',**
camera: false,
mic: false,
},
},
{
isOnline: true,
**hasRaisedHand: true**,
isTyping: false,
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
{
**isOnline: true,**
hasRaisedHand: false,
isTyping: false,
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
{
**isOnline: false,**
hasRaisedHand: false,
isTyping: false,
liveDetails: {
status: 'disabled',
camera: false,
mic: false,
},
},
]
【问题讨论】:
-
liveStatusTypes.disabled是什么意思? -
嗨,我编辑了我的帖子以更清晰
标签: javascript arrays sorting object methods