sindresorhus/eslint-plugin-unicorn

Rule proposal: Enforce compare function style for `Array#sort()`

Fermée

#1 473 ouverte le 8 août 2021

 (2 commentaires) (3 réactions) (0 personne assignée)JavaScript (468 forks)user submission
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.

Guide contributeur