以较短的方式将一个函数分配给多个变量

时间:2018-11-12 12:51:46

标签: javascript

我在JavaScript中具有以下随机电子邮件生成器:

getRandomEmail = function () {
    var strValues = "abcdefghijk123456789";
    var strEmail = "";
    for (var i = 0; i < strValues.length; i++) {
        strEmail = strEmail + strValues.charAt(Math.round(strValues.length * Math.random()));
    }
    return strEmail + "@mail.com";
};

我想在执行期间生成尽可能多的随机电子邮件。我可以简单地通过调用函数并将其分配给变量的次数来实现此目的:

var randEmail1 = getRandomEmail();
var randEmail2 = getRandomEmail();
var randEmail3 = getRandomEmail();
var randEmail4 = getRandomEmail();

以此类推,所以我需要的电子邮件越多,代码看起来就越丑陋,我想知道是否存在写此代码的简便方法?

编辑:

我有2个不同的.js文件:randomMethods.js和Register.js

在randomMethods.js中,我具有上述功能,在Register.js中,我具有以下功能:

require('../helpers/randomMethods.js');
...
var getMultipleEmails = count => Array.from(Array(count))
    .map(() => getRandomEmail());
var emails = getMultipleEmails(1);
...
emailInputField.sendKeys(emails[0]);

我正在使用Jasmine框架和量角器。

2 个答案:

答案 0 :(得分:3)

如果要在多个命名变量中使用它们,则无法显着缩短此时间。

通常,当您想要这样的事情列表或想要数量未知的事情时,最好有一个array之类的东西。

以下代码显示了生成随机电子邮件数组的功能,以及如何访问该数据:

var getRandomEmail = function () {
  var strValues = "abcdefghijk123456789";
  var strEmail = "";
  
  for (var i = 0; i < strValues.length; i++) {
      strEmail = strEmail + strValues.charAt(Math.round(strValues.length * Math.random()));
  }
  return strEmail + "@mail.com";
};

var getMultipleEmails = count => Array.from(Array(count))
  .map(() => getRandomEmail());
  
var emails = getMultipleEmails(5);

console.dir(emails);
console.log(emails[0]);
console.log(emails[1]);
console.log(emails[4]);

答案 1 :(得分:-1)

getRandomEmail = function () {
    var strValues = "abcdefghijk123456789";
    var strEmail = "";
    for (var i = 0; i < strValues.length; i++) {
        strEmail = strEmail + strValues.charAt(Math.round(strValues.length * Math.random()));
    }
    return strEmail + "@mail.com";
};



function generateNRandomeEmails(N){
  return [...Array(N).keys()].map((item)=> getRandomEmail() )
}

console.log(generateNRandomeEmails(5))