按关键字和值对对象数组进行排序
我有以下对象数组:
[
{
"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);