javascript - 不知道如何让这个名称生成器工作

标签 javascript arrays random

对于学校,我正在做一项作业,我们需要为男性和女性名字制作一个随机名称生成器,我们必须在它前面加上数字,但我不知道该怎么做。发电机本身正在工作,但我无法弄清楚它的数字部分。数字需要从 1 到最大 100。

var number = ["1", "2", "3", "4", "5"];
var randomnumber = Math.floor(Math.random() * number.length);
var counter = number[randomnumber];

document.write("Female Names");
document.write("<br>");
function femaleName (){
// My variables.
// Klinkers.
var klinker = ["o", "a", "i", "e", "u"];
var randomnumberk = Math.floor(Math.random() * klinker.length);
var randomklinker = klinker[randomnumberk];
var randomnumberk1 = Math.floor(Math.random() * klinker.length);
var randomklinker1 = klinker[randomnumberk1];
var randomnumberk2 = Math.floor(Math.random() * klinker.length);
var randomklinker2 = klinker[randomnumberk2];
var randomnumberk3 = Math.floor(Math.random() * klinker.length);
var randomklinker3 = klinker[randomnumberk3];
var randomnumberk4 = Math.floor(Math.random() * klinker.length);
var randomklinker4 = klinker[randomnumberk4];
// Medeklinkers.
var medeklinker = ["b", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "z",]
var randomnumbermk = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker = medeklinker[randomnumbermk];
var randomnumbermk1 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker1 = medeklinker[randomnumbermk1];
var randomnumbermk2 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker2 = medeklinker[randomnumbermk2];
var randomnumbermk3 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker3 = medeklinker[randomnumbermk3];
var randomnumbermk4 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker4 = medeklinker[randomnumbermk4];
document.write(number, randomklinker, randommedeklinker, randomklinker1, randommedeklinker1, randomklinker2);
document.write("<br>");
}

for ( var i = 0; i < 6; i++) {
femaleName();
}

document.write("<br>");
document.write("<br>");
document.write("<br>");
document.write("Male names");
document.write("<br>");

function maleName (){
// My variables.
// Klinkers.
var klinker = ["o", "a", "i", "e", "u"];
var randomnumberk = Math.floor(Math.random() * klinker.length);
var randomklinker = klinker[randomnumberk];
var randomnumberk1 = Math.floor(Math.random() * klinker.length);
var randomklinker1 = klinker[randomnumberk1];
var randomklinker2 = klinker[randomnumberk2];
var randomnumberk3 = Math.floor(Math.random() * klinker.length);
var randomklinker3 = klinker[randomnumberk3];
var randomnumberk4 = Math.floor(Math.random() * klinker.length);
var randomklinker4 = klinker[randomnumberk4];
// Medeklinkers.
var medeklinker = ["b", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "z",]
var randomnumbermk = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker = medeklinker[randomnumbermk];
var randomnumbermk1 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker1 = medeklinker[randomnumbermk1];
var randomnumbermk2 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker2 = medeklinker[randomnumbermk2];
var randomnumbermk3 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker3 = medeklinker[randomnumbermk3];
var randomnumbermk4 = Math.floor(Math.random() * medeklinker.length);
var randommedeklinker4 = medeklinker[randomnumbermk4];
document.write(randommedeklinker, randomklinker, randommedeklinker1, randomklinker1, randommedeklinker2);
document.write("<br>");
}

for ( var i = 0; i < 6; i++) {
  maleName();
}

我希望有人可以帮助我解决这个问题。

最佳答案

这类问题总是让我怀疑什么是最好的答案。显然,RRZ提供的解决方案有效,应标记为答案。 但是,我相信,如果您确保您的代码以清晰简洁的方式编写,您自己就会发现它!

我不想为您做作业,但我确实想向您展示编写此程序的另一种方法。

  • 尝试将您的问题分割为小问题:
    • 获取数字 1 到 5
    • 获取随机元音
    • 获取随机辅音
    • 将元音和辅音按顺序链接在一起
    • 将名称呈现到文档
  • 尝试思考哪些问题经常出现,并赋予它们自己的功能
  • 首先定义程序的“设置”
    • 您想要生成多少个名称
    • 女性名字的格式是什么
    • 男性名字的格式是什么

为了使这一点更加具体,我以回答这些要点的方式实现了您的代码:

// Settings
var NR_OF_NAMES = 6,
    // K = Klinker, M = Medeklinker
    FEMALE_NAME_PATTERN = "KMKMK",
    MALE_NAME_PATTERN = "MKMKM";

function getRandomIntBelow(max) {
  return Math.floor(Math.random() * max);
};

function getRandomFromArray(array) {
  return array[getRandomIntBelow(array.length)];
}

function getRandomKlinker() {
  return getRandomFromArray(["o", "a", "i", "e", "u"]);
}


function getRandomMedeklinker() {
  return getRandomFromArray(["b", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "z"]);
}

function getNameByPattern(pattern) {
  return pattern
    .split("") // Array of characters
    .map(function(code) {
       // Replace M by medeklinker
      if (code === "M") return getRandomMedeklinker();
      // Replace K by klinker
      if (code === "K") return getRandomKlinker();      
    })
    .join(""); // Back to string
}

// Document creation:

// Render a list of names
function writeNameBlock(pattern, count) {
  for (var i = 0; i < count; i++) {
    document.write("<br>");
    document.write(i + 1 + ". ");
    document.write(getNameByPattern(pattern));
  }
}

// Render the outlinse and include two lists
document.write("Female Names");
writeNameBlock(FEMALE_NAME_PATTERN, NR_OF_NAMES);
document.write("<br>");
document.write("<br>");
document.write("Male names");
writeNameBlock(MALE_NAME_PATTERN, NR_OF_NAMES);

关于javascript - 不知道如何让这个名称生成器工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39910402/

相关文章:

python - 从用户定义的分布中快速采样

java - 根据每个用户可预测地随机化项目列表

javascript - 如何通过突出显示的位置获取该行的文本

python - 从给定起始索引的一维数组中提取子数组 - Python/NumPy

arrays - Portlet 事件发送对象数组

arrays - 带有 numpy 数组的 Pandas 数据框值

python - 使用具有偏好和唯一性的 random.choice()

javascript - 如何在通过 load() 加载内容后更改或附加到 URL

javascript - dateaxis 渲染器未在我的代码中渲染

javascript - 在 Zend 项目中实现 Google Analytics/任何 Javascript 的最佳方式/最佳实践(适用于所有页面)