sindresorhus/eslint-plugin-unicorn

Rule proposal: `proper-object-iterable-methods`

Closed

#1,066 opened on Jan 25, 2021

 (12 comments) (13 reactions) (0 assignees)JavaScript (468 forks)user submission
help wantednew rule

Repository metrics

Stars
 (5,022 stars)
PR merge metrics
 (Avg merge 1d 16h) (399 merged PRs in 30d)

Description

Fail

// Should use `Object.values`
for (const key of Object.keys(foo)) {
	bar(foo[key]);
}
// Should use `Object.entries`
for (const key of Object.keys(foo)) {
	bar(foo[key], key);
}
// Should use `Object.values`
const foo = Object.keys(bar).map(key => baz(bar[key]));
// Should use `Object.entries`
const foo = Object.keys(bar).map(key => baz(bar[key], key));
// Should use `Object.keys`
for (const [key] of Object.entries(foo)) {
	bar(key);
}

Pass

for (const key of Object.keys(foo)) {
	foo[key] = 'new value';
	delete foo[key];
	foo[key]++;
}

Contributor guide