javascript - 使用sort按偏好排序?

标签 javascript sorting

我有一个对象数组,它返回 3 个可能的敏感度值:“低”、“中”、“高”。然而,使用下面的代码,它分别按升序排序“高 - 中和低”,我希望它返回“高 - 中和低”。我可以在这段代码中修复什么?

在此函数中,我比较数组中接收到的灵敏度

orderItemsByOrderOption = (items) => {
switch (this.state.selectedOrderOption.column) {
  case "sensitivity":
    return items.sort((a, b) => {
      if (a.sensitivity > b.sensitivity) {
        return 1;
      }
      if (a.sensitivity < b.sensitivity) {
        return -1;
      }
      // a must be equal to b
      return 0;
    });

最佳答案

您可以创建一个具有所需顺序的数组,并使用该数组中数组元素的敏感度索引进行排序。

示例

const arr = [
  { sensitivity: "MEDIUM" },
  { sensitivity: "LOW" },
  { sensitivity: "HIGH" }
];
const order = ["HIGH", "MEDIUM", "LOW"];

arr.sort((a, b) => order.indexOf(a.sensitivity) - order.indexOf(b.sensitivity));

console.log(arr);

关于javascript - 使用sort按偏好排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65401582/

相关文章:

javascript - React Native ReferenceError 找不到变量

javascript - 如何使用 JS 模拟元刷新?

javascript - 检测所选元素

java - 对 JSONObjects 的 ArrayList 进行排序无法正常工作

python - 对百分比列表进行排序

c++ - 从 vector 末尾开始的插入排序

java - 堆叠瓷砖(硬算法)

javascript - 在 React JS 中处理动态增长的列表

javascript - 将 rel ="lightbox"属性添加到 javascript 生成的图像链接

php - MySQL查询按行数排序?