javascript - 如何在没有手动索引的情况下对 Javascript 中的字母等级进行排序

标签 javascript sorting

试图找出如何正确排序字母等级数组 ['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F']。标准排序功能不这样做。我还希望在不为每个字母等级设置手动索引的情况下执行此操作。

const grades = ['B+', 'F', 'A-', 'A+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'A']

grades.sort((a, b) => {
    return a - b;
});

console.log(grades);

预期输出:

['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F']

最佳答案

您可以分开等级并为后缀符号取一个对象。

const grades = ['B+', 'A', 'A-', 'A+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F']

grades.sort((a, b) => {
    const order = { '+': -1, '-': 1, undefined: 0 };
    return a[0].localeCompare(b[0]) || order[a[1]] - order[b[1]];
});

console.log(...grades);

关于javascript - 如何在没有手动索引的情况下对 Javascript 中的字母等级进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58065288/

相关文章:

sorting - Redis:具体排序结果

android - 按字母顺序对 Android 应用程序进行排序?

javascript - 提交模式弹出窗口时无法禁用 .btn-default

javascript - 使用自有服务器的 Ebay 上的 Google Analytics

ios - 将 4 个不同数组的内容按相同顺序排序

python - 按属性值排序对象列表,属性值的顺序在另一个列表中

java - 按特定列对多种类型多维数组进行排序

javascript - 用户登录后如何从布局页面中删除登录按钮

javascript - Rails 无效日期问题

javascript - BLOB URL 在 Safari 中不起作用