[英]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.