JSFiddle - React, Tailwind, and code Playground

by dru_zod

JavaScript

console.clear();

let vowels = ['a', 'e', 'i', 'o', 'u'];
let consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'];
let domains = ['mail.com', 'mail.co.uk', 'mail.gov.uk'];

let random = function (min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min;
};

let r = function (array) {
	return array[random(0, array.length)];
};

let c = function () {
	return r(consonants);
};

let v = function () {
	return r(vowels);
};

let domain = function () {
	return r(domains);
};

let generate = function () {
  let cn = c();
  let rn = random(0, 5);
	switch (rn) {
    case 0:
    	return c() + v() + c();
  	case 1:
    	return v() + v() + c();
  	case 2:
    	return c() + v() + v();
  	case 3:
    	return v() + c() + c() + 'y';
  	case 4:
    	return c() + v() + c() + v();
  	case 5:
    	return v() + cn + cn;
  }
  return c() + v() + cn + cn + 'y';
};

let onlyUnique = function (value, index, self) { 
    return self.indexOf(value) === index;
};

let getNames = function (n) {
  let result = [];
  for (let i = 0; i < n; i += 1) {
    result.push(generate() + '.' + generate() + '@' + domain());
  }
  return result.filter(onlyUnique);
};

let outputAll = function (arr) {
	for (let i = 0; i < arr.length; i += 1) {
    console.log(arr[i]);
  }
};

outputAll(getNames(100));