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());
});
})