Javascript 编写此排序函数的更简洁的方法

Javascript 编写此排序函数的更简洁的方法,javascript,Javascript,我想不出一个更简洁的方法来编写这个函数——我想要一个三元函数,根据升序还是降序的类型来切换>,但是你似乎不能这样做。显然,重复我自己的话,我知道这是不好的,但我现在想不出别的办法 name: ((studies, type) => { let sortedStudies = studies; if (type === 'ASCENDING') { sortedStudies = studies.sort((a, b) => { let nam

我想不出一个更简洁的方法来编写这个函数——我想要一个三元函数,根据升序还是降序的类型来切换>,但是你似乎不能这样做。显然,重复我自己的话,我知道这是不好的,但我现在想不出别的办法

name: ((studies, type) => {
    let sortedStudies = studies;
    if (type === 'ASCENDING') {
      sortedStudies = studies.sort((a, b) => {
       let nameA = a.name.toUpperCase();
       let nameB = b.name.toUpperCase();
        if (nameA < nameB) {
          return -1;
        }
        if (nameA > nameB) {
          return 1;
        }
        return 0;
      });
    } else {
      sortedStudies = studies.sort((a, b) => {
       let nameA = a.name.toUpperCase();
       let nameB = b.name.toUpperCase();
        if (nameA > nameB) {
          return -1;
        }
        if (nameA < nameB) {
          return 1;
        }
        return 0;
      });
    }
    return sortedStudies
  })
name:((研究,类型)=>{
让分类研究=研究;
如果(类型==‘升序’){
分类研究=研究。分类((a,b)=>{
设nameA=a.name.toUpperCase();
设nameB=b.name.toUpperCase();
if(nameA名称B){
返回1;
}
返回0;
});
}否则{
分类研究=研究。分类((a,b)=>{
设nameA=a.name.toUpperCase();
设nameB=b.name.toUpperCase();
如果(名称A>名称B){
返回-1;
}
if(nameA
这是我在不修改工作逻辑的情况下编写的最佳版本(除了克隆阵列以避免对原始阵列进行变异外):

name:((研究,类型)=>{
让sortedStudies=studies.slice(0);
如果(类型==‘升序’)
返回sortedStudies.sort((a,b)=>{
设ans=a.name.toUpperCase()b.name.toUpperCase());
});
返回sortedStudies.sort((a,b)=>{
设ans=a.name.toUpperCase()
是处理此类问题更合适的网站。我建议在
sort
函数中移动
type
复选框,以减少代码量。默认情况下,可能是升序排序,如果是降序排序,那么?旁注:注意
sort
会变异数组(并返回它)。
const修饰符=(type==“升序”)?1 : -1; /*...*/ 返回nameA.localeCompare(nameB)*修饰符
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());
        });
    })