按关键字和值对对象数组进行排序

我有以下对象数组:

[
  {
    "type": "Exam",
    "value": 27
  },
  {
    "type": "Lesson",
    "value": 17
  },
  {
    "type": "Lesson",
    "value": 4
  },
  {
    "type": "Exam",
    "value": 67
  }
]

我需要先显示 Lessons 减少,然后 Exams 减少,所以最后我会有这样一个数组:

[
  {
    "type": "Lesson",
    "value": 17
  },
  {
    "type": "Lesson",
    "value": 4
  },
  {
    "type": "Exam",
    "value": 67
  },
  {
    "type": "Exam",
    "value": 27
  },
]

我通过使用 function 减少值来实现对所有内容的排序arr.sort((a,b)=>b.value-a.value)),但我不知道如何使用关键字进行排序。我将 React.js 与 TypeScript 一起使用。

回答

您可以先检查类型,然后按值降序排序。

const data = [{ type: "Exam", value: 27 }, { type: "Lesson", value: 17 }, { type: "Lesson", value: 4 }, { type: "Exam", value: 67 }];

data.sort((a, b) => (b.type === 'Lesson') - (a.type === 'Lesson') || b.value - a.value);

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
.as-console-wrapper { max-height: 100% !important; top: 0; }

一种使用对象进行排序的方法。

const
    data = [{ type: "Exam", value: 27 }, { type: "Lesson", value: 17 }, { type: "Lesson", value: 4 }, { type: "Exam", value: 67 }],
    order = { Lesson: 1, Exam: 2 };

data.sort((a, b) => order[a.type] - order[b.type] || b.value - a.value);

console.log(data);


以上是按关键字和值对对象数组进行排序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>