我有一個函式可以從物件資料庫中回傳有關員工的一些資訊
我面臨一些復雜的 ESlint 問題,所以我需要找到一種方法來最小化它或找到一種聰明的方法來做到這一點,而不是使用一整套 if 陳述句。
我也在嘗試找到這樣的方法:如果我有name,我不需要進行id驗證,反之亦然,我只是不知道該怎么做......???♂?
該函式必須接收一個選項物件作為引數,該物件將確定其行為方式:
- name:需要在資料庫中搜索的人的名字或姓氏
- id:需要搜索的人的id
例如:
getEmployeesCoverage({ name: 'Sharonda' });
getEmployeesCoverage({ name: 'Spry' });
getEmployeesCoverage({ id: '4b40a139-d4dc-4f09-822d-ec25e819a5ad' });
我有3個條件:
- 驗證我是否收到任何引數,例如
name或者id是undefined - 驗證
name資料庫中是否存在 - 驗證
id資料庫中是否存在
我試過這個:
function getEmployeesCoverage({ name, id }) {
if (employees.find((employee) => employee.id === id)) {
return getEmployeeById(id); // 3. verify if id exists in database
}
if (
employees.find((employee) => employee.lastName === name) ||
employees.find((employee) => employee.firstName === name)
) {
return getEmployeeByName(name); // 2. verify if the name exists in database
}
if (!name || !id) {
return getAllEmployees(); // 1. verify if i have any args e.g name or id undefined
}
throw new Error('Invalid Information');
}
uj5u.com熱心網友回復:
圈復雜度只是 ESLint 提供的一種風格建議,旨在鼓勵您if在單個函式中使用更少的代碼分支(例如 s)。您可以忽略警告或使用ESLint pragma禁用它(有問題的規則名為complexity)。
如果您想要一個能夠以不同方式查詢的函式(就像您在代碼中所做的那樣),那么您的函式需要根據輸入資料進行分支是理所當然的。
例如,Python 函式一直通過查詢哪些 kwarg 被提供給“多載”函式和沒有被提供給“多載”函式來執行此操作,并且該函式會根據提供的 args 更改行為。我不確定為什么您的ESLint 配置了如此低的復雜度值,或者它可能帶有低值。
上次我使用 ESLint 時,我發現自己立即禁用??了三四個“代碼風格”建議。我個人認為默認情況下它過于自以為是。
uj5u.com熱心網友回復:
也許你可以這樣做;
var employee = o.id ? employees.find(e => e.id === o.id) :
o.name ? employees.find(e => e.lastName === o.name || e.firstName === o.name)
: undefined;
所以如果 ESLint 抱怨嵌套三元組,也許你可以試試;
var employee = (o.id && employees.find(e => e.id === o.id)) ||
(o.name && employees.find(e => e.lastName === o.name || e.firstName === o.name));
如果一切都失敗了,你會得到false。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/417519.html
標籤:
