跳到主要內容

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() 回呼函式沒有副作用。

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

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

在遊樂場中嘗試這個規則 ↗

選項

這個規則無法設定。

何時不該使用

如果您故意使用像是 .filter(callback)[0] 的模式來執行 callback 的副作用於所有陣列元素上,您將會想避免這個規則。


類型檢查內嵌規則比傳統內嵌規則更強大,但同時也需要設定 類型檢查內嵌。如果您在啟用類型檢查規則後,發現效能下降,請參閱 效能問題排除

資源