如何使用特殊字符在一个提示中获得3个值以分开值以不编写3个提示?JavaScript



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

最新更新