[英]Get the value from an Array
我有一些需要帮助的代码:
var bob = [10,30,50,20,8];
// Call the function
foo(bob);
var foo = function(bob){
var max = 0,
min = 0,
average = 0,
sum = 0;
max = Math.max.apply( null, bob); // Get the max value.
min = Math.min.apply( null, bob); // Get the min value.
for( var i = 0; i < bob.length; i++ ){
sum += bob[ i ];
}
average = sum / l;
var resultArr = [];
resultArr[0] = average;
resultArr[1] = min;
resultArr[2] = max;
return resultArr;
}
document.getElementById('max').innerHTML = "Max value: "; // i want to print the max value here.
此函数返回具有最大值,最小值和平均值的数组。 如何选择在不同的div中打印哪个值?
您已经有了答案:
var resultArr = foo(bob);
document.getElementById('max').innerHTML = resultArr[2];
document.getElementById('min').innerHTML = resultArr[1];
// etc
document.getElementById('max').innerHTML = resultArr[2];
要么
<div id="max">
<script>document.write(resultArr[2]);</script>
</div>
或(jQuery)
$('#max').val(resultArr[2]);
您在这里有些困惑。 您有一个全局变量bob
,也有bob
作为函数参数。 另外,您有一个结果数组,该数组位于foo
函数的本地,称为resultArr
,但是在调用foo
函数时,您不会在任何地方分配它 。
请尝试以下代码:
var bob = [10,30,50,20,8];
var foo = function(arrayOfNumbers){
var resultObj = {
max: 0,
min: 0,
average: 0,
sum: 0
};
resultObj.max = Math.max.apply( null, arrayOfNumbers); // Get the max value.
resultObj.min = Math.min.apply( null, arrayOfNumbers); // Get the min value.
for( var i = 0; i < arrayOfNumbers.length; i++ ){
resultObj.sum += arrayOfNumbers[ i ];
}
resultObj.average = sum / l;
return resultObj;
}
// Call the function
var theResult = foo(bob);
document.getElementById('max').innerHTML = "Max value: "+theResult.max;
这是我对您的代码所做的更改以及原因的说明:
我确保您的变量名称不会冲突。 这应该可以帮助您了解每个变量的使用位置以及它们之间的关系。 bob
包含您的号码。 您将bob
传递给foo()
函数。 在foo
内部,数字现在称为v
。 这意味着您还可以使用frank
, joe
和tom
,并且可以对所有这些调用foo
。 arrayOfNumbers
是foo
的局部变量。
我将resultArr
从数组更改为对象。 对象更有意义,因为您可以将标签分配给值。 因此,现在可以在.max
而不是[0]
处访问最大值。 我还展示了如何在 foo
内部将结果对象称为resultObj
,但如何将其分配给foo 外的 theResult
。 然后,您可以引用theResult.min
, theResult.max
和theResult.average
。
我整理了一下,修复了缩进并将函数移到顶部,以提高可读性。
希望这可以帮助您了解发生了什么!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.