如何使用特殊字符在一个提示中获取3个值以分隔值而不写入3个提示? JavaScript的

问题描述 投票:0回答:3

我最近开始学习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);
}
javascript
3个回答
1
投票

您可以让用户输入数字,然后将其拆分,并将每个元素与变量进行比较,以找到最小的数字(从新创建的数组中的第一项开始。然后迭代该数组并将每个项目与最小数字进行比较,如果更小 - 替换最小的数字。

请注意,我不建议这样做 - 它只是回答你的问题,以便能够在一个提示中获取数字,然后从中得到最小的数字。此外 - 如果用户使用除“,”之外的任何其他分隔符输入数字,这将会中断,因此这不是一个好的解决方案 - 它只是回答了问题。

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);

0
投票

@ 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);

0
投票

首先,您需要删除所有非数字符号。最好的方法是使用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);
© www.soinside.com 2019 - 2024. All rights reserved.