我想基于开始值和结束值生成随机整数,但是,如果不存在开始值或结束值,则结果将为0.如果存在开始值或结束值,则结果将是1.
当没有传递参数时,我无法将此代码输出为“0”。
function randomInt(start, end){
switch (!isNaN(start) && start !== null , !isNaN(end) && end !== null){
case (true, false):
console.log ("only one number generated: ")
return 1
break;
case (false, false):
console.log ("no start or end numbers generated: ")
return 0
break;
case (true, true):
console.log ("start and end numbers generate: ")
return Math.round (Math.random() * (end-start) + start);
break;
}
}
console.log (randomInt(4, 20))
console.log (randomInt(20, 4))
console.log (randomInt()) //this currently returns case (true, false)
console.log (randomInt(2))
答案 0 :(得分:1)
你可以使用布尔&&确定应返回的内容,如果未通过则将参数设置为false。
function randomInt(start = false, end = false) {
let returnable;
start&&(returnable = 1, end)&&(returnable = 0);
return returnable || Math.round(Math.random() * (end - start) + start);
}
function randomInt(start = false, end = false) {
let returnable;
start&&(returnable = 1, end)&&(returnable = 0);
return returnable || Math.round(Math.random() * (end - start) + start);
}
console.log(randomInt(10, 20));
console.log(randomInt(10));
console.log(randomInt());

答案 1 :(得分:0)
如@Felix kling的评论所述,您的switch
语句使用有效语法,但不使用开关,只允许验证单个值。你应该在if
中使用它。
如果您能够使用if statement
,则以下代码非常有用
您。请看一下。
function randomInt(start, end){
if ((start == null || isNaN(start)) && (end == null || isNaN(end))){
return "no numbers are passed: "+ start + " and " + end;
}else if (start == null || isNaN(start)) {
return "Just one number passed: "+ end;
}else if (end == null || isNaN(end)){
return "Just one number passed: "+ start;
} else {
return "numbers ok: "+start+" and "+end;
}
}
console.log (randomInt(4, 20))
console.log (randomInt(20, 4))
console.log (randomInt()) //this currently returns case (true, false)
console.log (randomInt(2))
答案 2 :(得分:0)
这里的代码基于Felix Cling,Calvin Nunes和AndrewL的建议。
function randomInt(start, end) {
if (!start && !end) {
return 0;
} else if (!start || !end) {
return 1;
}
return Math.round(Math.random() * (end - start) + start);
}