如何解决如何创建一个JavaScript函数,该函数随机生成1到12之间的数字,并返回对应月份的名称
下面的代码存在的问题是,每次生成的都是“ 1”或“ January”,而不是使用1-12之间的随机生成的数字。我最初的想法是,问题在于某些片段不允许Math.random方法正确执行,因此默认值为1?在添加“ if”语句之前,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 check中使用赋值运算符。替换所有
=
使用
==
在您的条件下
,使用==
或===
(严格相等)进行比较,而不使用=
(分配)进行比较。
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
的一般规则是返回的值不应为执行的空值,因此将导致执行if块。 ==用于比较。
尝试使用包含所有月份的列表,然后根据生成的随机数对列表编制索引:)
function randomNum(min,max) {
let result = Math.floor(Math.random() * (max - min + 1) + min);
let months= ["January","December"];
return months[result-1];
}
console.log(randomNum(1,12));
*使用let
定义变量,以将其定义严格限制在{}
块或函数中。这有助于避免在函数内部意外更改全局变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。