如何创建一个javascript函数,该函数随机生成一个介于1和12之间的数字,并返回相应月份的名称



我对以下代码的问题是它产生了"1〃;或";一月";每次,而不是,我想,使用1-12之间的随机生成的数字。我最初的想法是,问题是有些部分不允许Math.random方法正确执行,所以它默认为1?Math.random函数完美地工作;如果";声明。我想我可能打错电话了。

注意:我相信我可以创建一个循环或其他东西来返回相应的月份,但我正在努力保持代码的基本性,因为我仍在学习基本知识。

欢迎任何帮助或见解。谢谢

function randomNum(min, max) {
var result = Math.floor(Math.random() * (max - min + 1) + min);
if (result = 1) {
return "January";
} else if ((result = 2)) {
return "February";
} else if ((result = 3)) {
return "March";
} else if ((result = 4)) {
return "April";
} else if ((result = 5)) {
return "May";
} else if ((result = 6)) {
return "June";
} else if ((result = 7)) {
return "July";
} else if ((result = 8)) {
return "August";
} else if ((result = 9)) {
return "September";
} else if ((result = 10)) {
return "October";
} else if ((result = 11)) {
return "November";
} else if ((result = 12)) {
return "December";
}
return result;
}
console.log(randomNum(1, 12));

您可以为随机值取一个数组长度的因子,并将整数值作为获取月份名称的索引。

function getRandomMonth() {
const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
return months[Math.floor(Math.random() * months.length)];
}
console.log(getRandomMonth());

您在if中使用赋值运算符,而不是equals检查。更换所有

=

使用

==

在您的条件下

使用=====(严格相等(进行比较,而不是使用=(赋值(。

function randomNum(min, max) {
var result = Math.floor(Math.random() * (max - min + 1) + min);
if (result == 1) {
return "January";
} else if ((result == 2)) {
return "February";
} else if ((result == 3)) {
return "March";
} else if ((result == 4)) {
return "April";
} else if ((result == 5)) {
return "May";
} else if ((result == 6)) {
return "June";
} else if ((result == 7)) {
return "July";
} else if ((result == 8)) {
return "August";
} else if ((result == 9)) {
return "September";
} else if ((result == 10)) {
return "October";
} else if ((result == 11)) {
return "November";
} else if ((result == 12)) {
return "December";
}
return result;
}
console.log(randomNum(1, 12));

您可以通过简单地从所有月份的数组中检索随机元素来简化这一过程。

function randomMonth(){
return ["January", "February", "March", "April", 
"May", "June", "July", "August", "September", 
"October", "November", "December"][Math.random() * 12 | 0];
}
console.log(randomMonth());

在类似if (result = 1)的情况下,您的代码块尝试使用=进行比较。result = x赋值操作,它不仅将x赋值给结果,而且返回x。由于具有非布尔值的if的一般规则是,返回的值在执行时不应为null,因此会导致执行if块。==用于比较。

尝试使用一个包含所有月份的列表,然后根据生成的随机数对列表进行索引:(

function randomNum(min, max) {
let result = Math.floor(Math.random() * (max - min + 1) + min);
let months= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

return months[result-1];
}
console.log(randomNum(1, 12));

*使用let定义变量,以严格限制其在{}块或函数中的定义。这有助于避免函数中全局变量的意外更改。

最新更新