找到整数数组javascript中的最大数字

时间:2018-03-19 06:13:50

标签: javascript html integer syntax-error

我对javascript的了解,我一直在这里获得帮助,这非常有帮助(感谢大家!)但它仍然非常有限且基本。基本上下面是我将提示弹出窗口,显示值的答案。事情是我在下面找到的编码,如果我必须插入一个数组,让我们说12,8,3,2输出将是8。由于某种原因,下面的代码只考虑1位数。有没有办法编辑此代码,以便上面输入的答案为12

再次感谢!

我做了相当多的研究:

代码:

<html><head>

  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  <title>test</title>


</head><body>
<br>

<script type="text/javascript">
    function evaluate() {
  const input = prompt("Please enter the array of integers in the form: 1,2,3,1")
    .split(',')
    .map(nums => nums.trim());

  function max(numArray) 
{
    var nums = numArray.slice();
    if (nums.length == 1) { return nums[0]; }
    if (nums[0] < nums[1]) { nums.splice(0,1); }
    else { nums.splice(1,1); }
    return max(nums);
}


  if (input == "" || input == null) {
            document.writeln("Sorry, there is nothing that can be calculated.");
        } else {    

  document.writeln("The largest number is: ");
  document.writeln(max(input) + " with a starting input string of: " + input);
}
}
  </script>

<script type="text/javascript">
    evaluate();
  </script>

</body></html>

3 个答案:

答案 0 :(得分:2)

您可以使用Math.max(...array)功能

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

const returnMax = (str='') => { // pass string
    const numbersArr = str.trim().split(',').map(num => parseInt(num.trim()));
    return Math.max(...numbersArr); // rest-spread operator from es6 syntax
}

有关休息运算符的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters

答案 1 :(得分:2)

问题是你正在比较字符串而不是整数。因此,它只比较数字的第一个字符&#39;在你的情况下,12 vs 8将导致8大于1(12的第一个字符)。在进行比较之前,请确保将字符串更改为整数。您需要改变的只有一行:

if (nums[0] < nums[1])

if (parseInt(nums[0]) < parseInt(nums[1]))

JSFiddle:https://jsfiddle.net/omartanti/ahbtg2z2/1/

请注意:如果第一个字符无法转换为数字,则parseInt会返回NaN

答案 2 :(得分:0)

您可以使用Math.max并传播运算符(...)来获取最大值。在代码段+num.trim()中会将字符串转换为数字

&#13;
&#13;
function evaluate() {
  const input = prompt("Please enter the array of integers in the form: 1,2,3,1")
    .split(',')
    .map(nums => +nums.trim());
  console.log(input)
  var getLargest = Math.max(...input);
  console.log(getLargest)
}

evaluate();
&#13;
&#13;
&#13;