簡體   English   中英

Javascript:代碼重構為單行而不是多行循環

[英]Javascript: code refactoring to single line instead of multiple line for loop

我是React和javascript的新手,試圖將以下代碼重構為更少的行:

for (const email of processedData) {
     if (validateEmail(email)) {
          count++;
          if (count === 100) {
             break;
           }
      }
 }

已處理數據是電子郵件列表,嘗試使用reduce進行操作,但在reduce中,一旦計數=== 100,我就無法中斷

謝謝

至少循環體可以輕松壓縮:

for(const email of processedData) {
    if(validateEmail(email) && ++count === 100) break
}

很難使其更短。 > _>

Array.prototype.some將在數組的元素上運行一個函數,直到該函數返回true。

然后,您可以執行以下操作:

編輯 :我的第一個建議的單行版本。

 var processedData = ["joe@test.co.uk", "john@test.co.uk", "jack@test.com", "jane@test.com", "amy@test.com"]; var count = 0; processedData.some(email => validateEmail(email) && (++count === 2)); function validateEmail(email) { console.log("validateEmail " + email); return (email.indexOf(".com") > -1); } 

好吧,如果您只想擁有一個包含100個項目的數組,那么這可能會有所幫助。 在數據數組上應用.filter(),然后將其切成100。

processedData.filter(email => validateEmail(email)).slice(0,100)

我認為...應該有幫助,但可能是重構的更好方法(一如既往)

for(const email of processedData){
  if(validateEmail(email) && count != 100) count++
}

如何使用下面的循環?

for(let i=0,count=0; i < processedData.length && count<100; i++){
    count+=validateEmail(processedData[i])
}

暫無
暫無

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

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