我最近开始学习JavaScript,有一些小任务,其中用户输入3个数字并选择最小的任务。我只能使用3个提示来完成。有什么方法可以在一个提示中进入所有3个数字?
while (true) {
var a, b, c;
a = +prompt("enter a number");
if (!a) {
break;
}
b = +prompt("enter a number");
if (!b) {
break;
}
c = +prompt("enter a number");
if (!c) {
break;
}
var mimNumber = Math.min(a, b, c);
alert("The smallest number is " + mimNumber);
}
您可以拥有用户输入数字,然后将其分开,并将每个元素与一个变量进行比较以找到最小的数字(从新创建的数组中的第一个项目开始。该数组并将每个项目与最小数字进行比较,如果较小 - 替换最小的数字。
请注意,我不建议这样做 - 它只是回答您的问题,以便能够在一个提示中获取数字,然后从中获得最小的数字。另外 - 如果用户使用除"以外的任何其他定界符输入数字,这将是一个不错的解决方案 - 它只是回答问题。
var nums = prompt("enter 3 numbers separated by a comma");
var numArr = nums.split(',');
var minNum = parseInt(numArr[0]);
numArr.forEach(function (num) {
let numb = parseInt(num);
if(numb< minNum) { minNum = numb}
})
alert("The smallest number is " + minNum);
@gavgrif'sanswer的另一份副本仅用于显示其他方法。
var numbers = prompt("enter 3 numbers separated by commas");
var smallest = Math.min.apply(null, numbers.split(',').map(Number));
alert("The smallest number is " + smallest);
首先,您需要删除所有不是数字符号。最好的方法是用Regexp
const initialText = '123, 32hfg54, 78';
const regExp = new RegExp("\D");
const splittedArray = initialText.split(regExp).map(number => parseInt(number)).filter(number => Number.isInteger(number));
结果,您将在splittedArray
中具有数字数组。您应该检查它中只有3个数字(如果需要),并找到最小数字
if (splittedArray.length !== 3) {
throw new Error('You should enter 3 number');
}
const minNumber = Math.min(...splittedArray);