我对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>
答案 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()
中会将字符串转换为数字
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;