sindresorhus/eslint-plugin-unicorn

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

Fechada

#2.583 aberto em 2 de mar. de 2025

 (1 comentário) (0 reação) (0 responsável)JavaScript (468 forks)user submission
help wantednew rule

Métricas do repositório

Stars
 (5.022 estrelas)
Métricas de merge de PR
 (Mesclagem média 4h 30m) (26 fundiu PRs em 30d)

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.

Guia do colaborador