簡體   English   中英

重構javascript中的硬代碼

[英]Refactoring of the hard code in javascript

我有一些API可以啟動我的項目,這是代碼的一部分,我想問一下

 getList(oauth2Client).then(items => { for (const item of items) { if (item.selected && (item.id === 'sib43214@gmail.com' || item.id === 'iva72198@gmail.com')) { promiseArray.push(getEvents(oauth2Client, item.id, item.backgroundColor)); } } 

我該如何在沒有硬代碼的情況下執行if語句,我的意思是將這兩封特定的電子郵件更改為一些常見的用例。

使用數組或Set代替:

getList(oauth2Client).then(items => {
  const emails = new Set(['sib43214@gmail.com', 'iva72198@gmail.com']);
  for (const item of items) {
    if (item.selected && emails.has(item.id)) {
      promiseArray.push(getEvents(oauth2Client, item.id, item.backgroundColor));
    }
  }
});

我更喜歡Set因為它具有較低的復雜度,但是對於數組,請使用.includes

getList(oauth2Client).then(items => {
  const emails = ['sib43214@gmail.com', 'iva72198@gmail.com'];
  for (const item of items) {
    if (item.selected && emails.includes(item.id)) {
      promiseArray.push(getEvents(oauth2Client, item.id, item.backgroundColor));
    }
  }
});

或者,如果您希望傳遞任何電子郵件地址,請使用正則表達式,例如:

getList(oauth2Client).then(items => {
  const emailRe = /^\w+@[a-z0-9]\.[a-z]+$/i;
  for (const item of items) {
    if (item.selected && emailRe.test(item.id)) {
      promiseArray.push(getEvents(oauth2Client, item.id, item.backgroundColor));
    }
  }
});

(如果您想更加嚴格,請在此處查看正則表達式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM