javascript - 按特定单词 react 排序

标签 javascript reactjs

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

myArray.sort((a, b) => a.scorePriority - b.scorePriority)

这工作正常,但现在,我需要按高、中、低对它进行排序,并完全忽略数字。

[
    { scorePriority: 10, scoreValue: "low" },
    { scorePriority: 3, scoreValue: "high" },
    { scorePriority: 10, scoreValue: "medium" }
]

我需要按分数值排序,它可以是低、中或高。

有什么帮助吗?

最佳答案

使用localeCompare根据 scoreValue 按字母顺序排序:

array.sort((a, b) => a.scoreValue.localeCompare(b.scoreValue))

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

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

const array = [
  { scoreValue: 'low', scorePriority: 0 },
  { scoreValue: 'medium', scorePriority: 5 },
  { scoreValue: 'low', scorePriority: 6 },
  { scoreValue: 'high', scorePriority: 2 },
  { scoreValue: 'medium', scorePriority: 0 },
  { scoreValue: 'high', scorePriority: 10 }
];

const sorted1 = [...array].sort((a, b) => a.scoreValue.localeCompare(b.scoreValue));
console.log(sorted1);

const sorted2 = [...array].sort((a, b) => {
  const orders = { 'low': 0, 'medium': 1, 'high': 2 };
  return orders[a.scoreValue] - orders[b.scoreValue];
});
console.log(sorted2);

关于javascript - 按特定单词 react 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55123569/

相关文章:

javascript - 有什么方法可以从更改 Object.prototype.hasOwnProperty 的人那里恢复过来吗?

javascript - 反转一个js条件

Javascript 焦点和模糊

javascript - 如何最好地利用 setInterval 来轮询 API 端点?

reactjs - Saga 观察者未接收或处理调度的操作

javascript - create-react-app 中止,代码为 ENOENT

javascript - Create-React-App:如何正确加载静态图像

javascript - 如何仅在触摸 Field 时显示错误? | react && 福尔米克

javascript - 当值为 null 时使用扩展运算符

javascript - 在javascript中链接多个异步方法