sindresorhus/eslint-plugin-unicorn
Rule proposal: Enforce compare function style for `Array#sort()`
Fermée
#1 473 ouverte le 8 août 2021
help wantednew rule
Métriques du dépôt
- Stars
- (5 022 étoiles)
- Métriques de merge PR
- (Merge moyen 1j 16h) (399 PRs mergées en 30 j)
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.