,“最容易”到“最难”)

nzkunb0c  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(259)

我有一个具有难度属性的对象数组,我希望能够按“最容易”到“最难”对列表进行排序,其中可能的值为“最容易”、“容易”、“中等”、“难”和“最难”。要按标题的字母顺序排序,我只需执行以下操作:

items.sort((a, b) => ((b.title > a.title) ? 1 : -1));

但这并不能为“最容易到最难”提供理想的结果。有没有一种有效的方法可以做到这一点?

zazmityj

zazmityj1#

我建议您使用从字符串到int的Map:

const sortMap = {
   'easiest': 0,
   'easy': 1,
   'medium': 2,
   'hard': 3,
   'hardest': 4,
}
// and then sort with it
items.sort((a, b) => (sortMap[b.difficulty] - sortMap[a.difficulty]);

这可能比使用 indexOf ,但这很容易出错,因为必须小心地将值指定给map对象中的键

juud5qan

juud5qan2#

将所有可能的标题放在一个数组中,并按它们在数组中的索引排序。

const levels = ['easiest', 'easy', 'medium', 'hard', 'hardest'];
items.sort((a, b) => levels.indexOf(b.difficulty) - levels.indexOf(a.difficulty));

相关问题