更清洁的方式来编写这种排序功能

时间:2018-05-03 09:18:50

标签: javascript

我想不出一种更清晰的方式来编写这个函数 - 我希望有一个三元组来切换>取决于ASCENDING或DECENDING的类型,但你似乎无法做到这一点。显然重复自己,并且知道这不好,但暂时不能想到另一种方式。

new_tick_label = ['{:5.2e}'.format(x) for x in leak] 
ax2.set_xticks(new_tick_locations)
ax2.set_xticklabels(new_tick_label, rotation=30)

1 个答案:

答案 0 :(得分:0)

这是我可以在不修改你的工作逻辑的情况下编写的最佳版本(除了我克隆数组以避免改变原始数据):

name: ((studies, type) => {
        let sortedStudies = studies.slice(0);
        if (type === 'ASCENDING')
            return sortedStudies.sort((a, b) => {
                let ans = a.name.toUpperCase() < b.name.toUpperCase() ? -1 : -2;
                return ans === -1 ? ans : Number(a.name.toUpperCase() > b.name.toUpperCase());
            });
        return sortedStudies.sort((a, b) => {
            let ans = a.name.toUpperCase() < b.name.toUpperCase() ? -1 : -2;
            return ans === -1 ? ans : Number(a.name.toUpperCase() < b.name.toUpperCase());
        });
    })