反应按特定单词排序

sol*_*for 3 javascript reactjs

我目前正在按数字对JSON对象数组进行排序。

myArray.sort((a, b) => a.scorePriority - b.scorePriority)
Run Code Online (Sandbox Code Playgroud)

效果很好,但是现在,我需要按高,中,低排序,并完全忽略数字。

[
    { scorePriority: 10, scoreValue: "low" },
    { scorePriority: 3, scoreValue: "high" },
    { scorePriority: 10, scoreValue: "medium" }
]
Run Code Online (Sandbox Code Playgroud)

我需要按scoreValue排序,它可以是低,中或高。

有什么帮助吗?

jo_*_*_va 5

使用localeCompare根据scoreValue以下内容按字母顺序排序:

array.sort((a, b) => a.scoreValue.localeCompare(b.scoreValue))
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要预定义的顺序(低->中->高),请使用顺序图,其键是可能的scoreValue字符串,其值是这些键的关联顺序:

array.sort((a, b) => {
  const orders = { 'low': 0, 'medium': 1, 'high': 2 };
  return orders[a.scoreValue] - orders[b.scoreValue];
});
Run Code Online (Sandbox Code Playgroud)

array.sort((a, b) => a.scoreValue.localeCompare(b.scoreValue))
Run Code Online (Sandbox Code Playgroud)