Javascript:代码重构为单行而不是多行循环

时间:2018-07-11 11:34:30

标签: javascript

我是新来的React和javascript,试图将以下代码重构为更少的行:

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

processedData是电子邮件列表,尝试使用reduce进行操作,但是在reduce中,一旦计数=== 100,我就无法中断

谢谢

5 个答案:

答案 0 :(得分:4)

至少循环体可以轻松压缩:

'cat'

很难使其更短。 > _>

答案 1 :(得分:4)

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);
}

答案 2 :(得分:1)

好吧,如果您只想拥有一个包含100个项目的数组,那么这可能会有所帮助。在数据数组上应用.filter(),然后将其切成100。

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

答案 3 :(得分:0)

我认为...应该有所帮助,但可能是重构的更好方式(一如既往)

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

答案 4 :(得分:0)

如何使用下面的循环?

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