当参数少于参数时使用Switch

时间:2018-05-02 17:41:44

标签: javascript

我想基于开始值和结束值生成随机整数,但是,如果不存在开始值或结束值,则结果将为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))

3 个答案:

答案 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); 
}