数组中最高和最低的问题

时间:2016-12-03 13:35:42

标签: javascript

除了最高和最低值之外,我的代码工作正如练习所要求的那样。我试过做最大和最小的事情,但我要么把它放在错误的地方或丢失的东西。它现在的工作方式除了如果你输入例如1,2,3,11,20之外,它会说最高的是3.

它需要回来,它显示你输入的内容,然后对其进行排序,它显示数字的总和,然后是最高和最低。

我哪里错了?我猜我应该使用max和min,但我似乎无法使用它来使用它。

<meta charset="UTF-8">
<title>Laskenta</title>
<script>



var yht=0; //total
var luku=0; //numbers entered
var suurin;// largest number entered
var pienin; // smallest number entered
var i;//counter

var heitto=new Array(5);//heitto= throw

for( var i = 0; i < heitto.length; i++) {
heitto[i]=prompt("anna ", i + 1 + " . heitto") 

document.write ("Index " + i + ": " + "heitto = "  + heitto[i]+"<br>");

if (i == 0) {
suurin = heitto[i];
pienin = heitto[i];
}
else {
  if (heitto[i] > suurin) suurin = heitto[i];
  if (heitto[i] < pienin) pienin = heitto[i];
}
yht+=parseInt(heitto[i]);
} 

document.write ("<br>" + "suurin - pienin heittojen " + heitto.sort(function(a, b){return b-a}) + "<br>");
document.write("<br>" +"Syöttämiesi heittojen summa on " ,yht, "<br>");
document.write("<br />Suurin heitto on "+suurin);
document.write("<br />Pienin heitto  on "+pienin);
</script>

1 个答案:

答案 0 :(得分:0)

基本上你有两个问题:

  • 字符串而不是输入的数值,这就是为什么3是最大值,但仅当3是字符串时。按字符串排序'1', '11', '2', '20', '3'

    heitto[i] = +prompt("anna ", i + 1 + " . heitto"); // get the numerical value of input
    //          ^
    
  • 比较结果没有正确的起始值。

    suurin = -Infinity; // initialize with a small number
    pienin = Infinity;  // initialize with a big number
    

在获取最高值和最低值的循环中,你是比较字符串,然后你得到结果,因为字符串的顺序。对于数值比较,最好将两个值预先转换为数值,使用隐式转换为带有一元+的数字,或显式带有parseIntparseFloat或{{1 }}

您的排序功能使用隐式转换来编号为Number。 Taht是你得到一个numericl排序数组而不是像上面这样的排序顺序的数组的原因。

-