Skip to content

Rule proposal: no-useless-object-entries-lookup #2583

@fisker

Description

@fisker

Description

I found this pattern

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions