prefer-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()
回呼函式沒有副作用。
- ❌ 錯誤
- ✅ 正確
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-find": "error"
}
};
在遊樂場中嘗試這個規則 ↗
選項
這個規則無法設定。
何時不該使用
如果您故意使用像是 .filter(callback)[0]
的模式來執行 callback
的副作用於所有陣列元素上,您將會想避免這個規則。
類型檢查內嵌規則比傳統內嵌規則更強大,但同時也需要設定 類型檢查內嵌。如果您在啟用類型檢查規則後,發現效能下降,請參閱 效能問題排除。