sindresorhus/eslint-plugin-unicorn

Rule proposal: `no-useless-object-entries-lookup`

Fermée

#2 583 ouverte le 2 mars 2025

 (1 commentaire) (0 réaction) (0 personne assignée)JavaScript (468 forks)user submission
help wantednew rule

Métriques du dépôt

Stars
 (5 022 étoiles)
Métriques de merge PR
 (Merge moyen 4h 30m) (26 PRs mergées en 30 j)

Description

Description

I found this pattern

https://github.com/sindresorhus/eslint-plugin-unicorn/blob/e48a6203736e56cd2ff752613ed7ce8b5d4f008a/rules/no-unnecessary-polyfills.js#L130-L132

in https://github.com/sindresorhus/eslint-plugin-unicorn/pull/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.

Guide contributeur