跳至主要内容

优先使用 find

强制使用 Array.prototype.find() 而不是 Array.prototype.filter() 后跟 [0] 来查找单个结果。

💡

此规则报告的一些问题可以通过编辑器 建议 手动修复。

💭

此规则需要 类型信息 才能运行。

在搜索数组中第一个匹配条件的项时,可能很想使用类似 arr.filter(x => x > 0)[0] 的代码。但是,使用 Array.prototype.find() 更简单,arr.find(x => x > 0),它也返回第一个匹配条件的条目。因为 .find() 只需要在找到匹配项之前执行回调,所以它也更高效。

信息

注意两种方法之间短路行为的差异。.find() 只会对数组元素执行回调,直到找到匹配项,而 .filter() 会对所有数组元素执行回调。因此,在修复此规则的错误时,请确保您的 .filter() 回调没有副作用。

[1, 2, 3].filter(x => x > 1)[0];

[1, 2, 3].filter(x => x > 1).at(0);
在 Playground 中打开
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-find": "error"
}
};

在 Playground 中尝试此规则 ↗

选项

此规则不可配置。

何时不使用它

如果您有意使用 .filter(callback)[0] 之类的模式来在所有数组元素上执行 callback 中的副作用,则您将希望避免此规则。


类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 linting。如果您在启用类型检查的规则后遇到性能下降,请参阅 性能故障排除

资源