我最近开始学习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);