sindresorhus/eslint-plugin-unicorn

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

Chiusa

#1473 aperta il 8 ago 2021

 (2 commenti) (3 reazioni) (0 assegnatari)JavaScript (468 fork)user submission
help wantednew rule

Metriche repository

Star
 (5022 stelle)
Metriche merge PR
 (Merge medio 4h 30m) (26 PR mergiate in 30 g)

Descrizione

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.

Guida contributor