sindresorhus/eslint-plugin-unicorn

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

已关闭

#1,473 创建于 2021年8月8日

 (2 条评论) (3 个反应) (0 位负责人)JavaScript (468 个派生)user submission
help wantednew rule

仓库指标

星标
 (5,022 个星标)
PR 合并指标
 (平均合并 1天 16小时) (30 天内合并 399 个 PR)

描述

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.

贡献者指南