javascript - 数组中最高和最低的问题

标签 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>

最佳答案

基本上你有两个问题:

  • 输入字符串而不是数值,这就是为什么 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
    

在获取最高值和最低值的循环中,您比较字符串,然后您得到结果,因为字符串的顺序。对于数值比较,最好提前将两个值转换为数值,方法是使用一元 + 隐式转换为 Number,或者使用 parseInt, 显式转换parseFloatNumber

您的排序函数使用 - 隐式转换为数字。这就是为什么您得到的是数字排序数组而不是具有上述排序顺序的数组的原因。

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

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

for (var i = 0; i < heitto.length; i++) {
    heitto[i] = +prompt("anna ", i + 1 + " . heitto"); // get the numerical value of input

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

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

关于javascript - 数组中最高和最低的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948357/

相关文章:

javascript - 按位置 angularjs 从现有图像中获取图像大小

javascript - 如何让 Flow 在 React 应用程序中验证 Web API?

javascript - Moment js 日期时间比较

Javascript 更改所有输入的文本

javascript - 使用AJAX加载元素时重新加载JS函数

javascript - ExtJs框架中有概念类吗?

javascript - 如何在语义-ui react 中设置最小高度

javascript - D3v6 缩放导致指针位置错误

javascript - 如何在 Angular 中启用 PouchDB 调试

javascript - 我想仅在reactjs中更改单击按钮(onClick)的变体或背景。我怎样才能实现它?