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