Math.random在控制台记录javascript时返回相同的值



这是我的代码

// import user input prompt 
var inquirer = require('inquirer');
var emptyFamArray = [];
// ask the user how many relatives do they have
const getQuestions = () => {
inquirer.prompt([
{
name: "relatives_names",
type: 'input',
message: "Please input family first names seperated by a space. only 1-10 family members please!",

},
]).then((answers => {
// console.log(answers)
let test1 = JSON.stringify(answers.relatives_names).split(' ');
// console.log(test1);

let randomArrayName = test1[Math.floor(test1.length * Math.random())]
let randomArrayNameTwo = test1[Math.floor(test1.length * Math.random())]
console.log(randomArrayName)


if(test1.length > 10){
console.log('to many names please input 10 or less')
} else if (test1.length == 9){

console.log(randomArrayName + " Gets " + randomArrayNameTwo + " for christmas pickings!");


}else if (test1.length == 5){
console.log(randomArrayName + " Gets " + randomArrayNameTwo + " for christmas pickings!");
console.log(randomArrayName + " Gets " + randomArrayNameTwo + " for christmas pickings!");
console.log(randomArrayName + " Gets " + randomArrayNameTwo + " for christmas pickings!");
console.log(randomArrayName + " Gets " + randomArrayNameTwo + " for christmas pickings!");
console.log(randomArrayName + " Gets " + randomArrayNameTwo + " for christmas pickings!");

当它控制台日志时,它确实会随机化名称,但它只会一次又一次地返回相同的值

示例

kylee Gets gerald for christmas pickings!
kylee Gets gerald for christmas pickings!
kylee Gets gerald for christmas pickings!

我该怎么解决这个问题?我被卡住了,不完全确定每次记录时如何使变量随机

感谢

当您打印到控制台时,随机选择已经发生,并且在打印出名称之前只发生了一次。要使它每次都选择一个随机名称,请将所选内容转换为一个函数,每次您想打印到控制台时都会调用该函数。例如:

var selectRandomName = function(names) {
return names[Math.floor(names.length * Math.random())]
}
console.log(selectRandomName(names) + " GETS " + selectRandomName(names) + " for Christmas pickings!");

显然,这过于简单化了,您可能还应该防止两次选择相同的名称和其他类似的情况,但这超出了当前问题的范围。我认为这是一种练习,因为在实际应用程序中,您应该使用一些现成的匹配库。

最新更新