diff --git a/packages/eslint-plugin/src/rules/prefer-find.ts b/packages/eslint-plugin/src/rules/prefer-find.ts index f1440dcd826..154d27d1a86 100644 --- a/packages/eslint-plugin/src/rules/prefer-find.ts +++ b/packages/eslint-plugin/src/rules/prefer-find.ts @@ -153,15 +153,14 @@ export default createRule({ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at#parameters */ function isTreatedAsZeroByArrayAt(value: unknown): boolean { - let asNumber: number; - - try { - asNumber = Number(value); - } catch (e) { - // This will happen if trying to convert a symbol. + // This would cause the number constructor coercion to throw. Other static + // values are safe. + if (typeof value === 'symbol') { return false; } + const asNumber = Number(value); + if (isNaN(asNumber)) { return true; } diff --git a/packages/eslint-plugin/tests/rules/prefer-find.test.ts b/packages/eslint-plugin/tests/rules/prefer-find.test.ts index 59f6d9a07be..dddb56f14d3 100644 --- a/packages/eslint-plugin/tests/rules/prefer-find.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-find.test.ts @@ -68,12 +68,8 @@ ruleTester.run('prefer-find', rule, { const s = Symbol.for("Don't throw!"); arr.filter(item => item === 'aha').at(s); `, - ` - [1, 2, 3].filter(x => x)[Symbol('0')]; - `, - ` - [1, 2, 3].filter(x => x)[Symbol.for('0')]; - `, + "[1, 2, 3].filter(x => x)[Symbol('0')];", + "[1, 2, 3].filter(x => x)[Symbol.for('0')];", ], invalid: [