sindresorhus/eslint-plugin-unicorn
View on GitHubRule proposal: Enforce compare function style for `Array#sort()`
Open
#1,473 opened on Aug 8, 2021
help wantednew rule
Description
I've seen many people just write the compare function too complicated, yes sometimes maybe it's more readable, but sometimes it's just too long.
Fail
array.sort((a, b) => {
if (a > b) {
return 1;
}
if (a < b) {
return -1;
}
return 0;
});
array.sort((a, b) => a > b ? 1 : -1);
array.sort((a, b) => {
if (a.foo > b.foo) {
return 1;
}
if (a.foo < b.foo) {
return -1;
}
if (a.bar > b.bar) {
return 1;
}
if (a.bar < b.bar) {
return -1;
}
return 0;
});
array.sort(() => Math.random() > 0. 5 ? 1 : -1);
Pass
array.sort((a, b) => a - b);
array.sort((a, b) => a.localeCompare(b));
array.sort((a, b) => a.foo - b.foo || a.bar - b.bar);
array.sort(() => Math.random() - 0.5);
This rule should not fixable unless we are sure they are numbers.