-
-
Notifications
You must be signed in to change notification settings - Fork 412
Open
Labels
Description
Description
I found this pattern
eslint-plugin-unicorn/rules/no-unnecessary-polyfills.js
Lines 130 to 132 in e48a620
const [, features] = Object.entries(coreJsEntries).find( | |
entry => entry[0] === `core-js/full/${namespace}${method && '/'}${method}`, | |
); |
in #2582, which use Object.entry
to search for a specific key and access the value, which should use a direct object property access instead.
Examples
// ❌
const [, value] = Object.entries(object).find(([key,]) => key === 'something');
const value = Object.entries(object).find(([key,]) => key === 'something')[1];
const value = Object.entries(object).find(([key,]) => key === 'something')?.[1];
const [, value] = Object.entries(object).find((entries) => entries[0] === 'something');
const value = Object.entries(object).find((entries) => entries[0] === 'something')[1];
const value = Object.entries(object).find((entries) => entries[0] === 'something')?.[1];
// ✅
const value = object.something;
Proposed rule name
no-useless-object-entries-lookup
Additional Info
Note 1: this rule should ensure the searching key can't be object builtin properties/methods.
Should ignore this case, since foo
can be constructor
or something else which is in object prototype.
Object.entry(object).find(([key]) => key === foo)
Note 2: Maybe it's also hard to detect that object
is a plain object.