如何在循环时返回最大数量的数组

时间:2014-03-06 03:38:27

标签: javascript arrays for-loop

如何在循环时键入检查并返回最大数量的数组?我无法让下面的代码工作。

var v = prompt("Enter a Value", "0");
var w = prompt("Enter a Value", "0");
var x = prompt("Enter a Value", "0");
var y = prompt("Enter a Value", "0");
var z = prompt("Enter a Value", "0");
var num1 = parseInt(v, 10);
var num2 = parseInt(w, 10);
var num3 = parseInt(x, 10);
var num4 = parseInt(y, 10);
var num5 = parseInt(z, 10);

var numArray = [num1, num2, num3, num4, num5];
var highest = 0;
for (var i = 0; i <= numArray.length; i++) {
    if (numArray[i] > highest) {
        highest = numArray[i];
    }
}

return(highest);

2 个答案:

答案 0 :(得分:5)

你可以这样做:

var highest = Math.max.apply(null, numArray);

答案 1 :(得分:1)

您可能想要这样做:

var numArray = [num1, num2, num3, num4, num5];
var highest = numArray[0];
for (var i=1; i<=numArray.length; i++){
    if (numArray[i]>highest){
        highest=numArray[i];
    }
}

return(highest);

区别在于:如果设置highest = 0,则表示您输入的最高值为负数的可能性为折扣 - 因此对于-1,-2,-3,-4,-5作为输入,返回值仍为{{1} }。通过说“这是我看到的第一件事:根据定义是最高的”,然后将其他值(第二,第三等)与你的“当前最佳”进行比较,你就避免了这个错误。这种东西出现在软件的各个地方 - 通常“第一次迭代”必须有点不同。在这种情况下,我完全有效地完成了循环的第一次迭代。