如何创建随机选择其他功能的功能?

时间:2018-03-13 19:04:17

标签: javascript

所以我用HTML / Javascript创建了几个随机生成器,然后他们吐出随机单词或随机生成的短语组合。我只知道如何用一个单词或数字列表来填充我想随机化的变量。

但是现在,我想知道我是否可以从我在文档中定义的几个不同的随机生成器函数中随机选择按钮元素。这样,我可以使用一个按钮选择一组随机组合或另一组组合。例如,在点击时,您可以获得女性的第一个/中间/姓氏或男性的第一个/中间/姓氏,而不是每个功能都有一个单独的按钮。

换句话说:如何创建一个随机选择其他函数的函数?

4 个答案:

答案 0 :(得分:1)

我建议创建一个包含所有各种函数的数组。之后,您可以在单击时在0和#numOfFunctions之间创建一个随机数,并使用此随机数作为索引从该数组中选择一个函数。

答案 1 :(得分:0)

你可以在一个数组中获取一个类的所有方法,然后随机运行其中一个,如果你不希望它以相同的顺序重复而从数组中删除它,各种各样的东西都可以完成后,它会变得非常复杂。见ES6 Iterate over class methods

为了获得准确的结果,您可能想要了解如何对它们进行分组,因此您可以根据其目的获得各种方法池。您可以在方法名称中提出约定。

答案 2 :(得分:0)

在javascript函数中是第一类对象。这意味着您可以将它们视为所有其他数据 - 它们可以具有属性,在这种情况下,您可以将它们作为数据传递并将它们放在其他结构中。

这意味着您可以拥有类似包含函数的数组的数据结构。例如,这是一个包含三个匿名函数的数组,我们称之为第二个函数:



var functions = [
  function() {
    console.log("random 0")
  },
  function() {
    console.log("random 1")
  },
  function() {
    console.log("random 2")
  }
]

functions[1]()




您可以将其与随机数结合起来随机调用它们:



// array of functions
var functions = [
  function() {
    console.log("random 0")
  },
  function() {
    console.log("random 1")
  },
  function() {
    console.log("random 2")
  }
]

// function to make a random number and call that function from a list of functions passed in
function callRandomFunction(functions) {
  let num = functions.length
  let randomInt = Math.floor(Math.random() * num)
  functions[randomInt]()
}

// call the above function a bumch of times
for (let i = 0; i < 10; i++) {
  callRandomFunction(functions)
}
&#13;
&#13;
&#13;

答案 3 :(得分:0)

如果在调用者函数中将函数定义为字符串,则可以使用另一个随机数来决定调用哪个函数,然后使用它执行所需的操作。

示例:

&#13;
&#13;
function printName() {
  var first, middle, last;
  var optionName = Math.floor(Math.random() * 6); // returns a number between 0 and 5 
  var name;
  switch (optionName) {
    case 0:
      name = maleFirst();
      break;
    case 1:
      name = maleMiddle();
      break;
    case 2:
      name = maleLast();
      break;
    case 3:
      name = femaleFirst();
      break;
    case 4:
      name = femaleMiddle();
      break;
    case 5:
      name = femaleLast();
      break;
  }
  console.log(name);
  return name;
}

function maleFirst() {
  return "jim";
}

function maleMiddle() {
  return "bob";
}

function maleLast() {
  return "dangle";
}

function femaleFirst() {
  return "eugenia";
}

function femaleMiddle() {
  return "jade";
}

function femaleLast() {
  return "thomas";
}
&#13;
<!DOCTYPE html>
<html>

<body>

  <button type="button" onclick="printName()">Click Me!</button>

</body>

</html>
&#13;
&#13;
&#13;