我是新来的。我花了一整天的时间试图弄清楚我的代码出了什么问题。是的,这对你来说可能是一个简单的问题,因为我大约一个月前才开始使用javascript。无论如何,您在我的代码中识别错误的帮助是非常感激的!
==========================================================================
问题:
编写一个名为extremeValue的函数。它有两个参数。第一个是整数数组(您不需要验证它)。第二个参数是字符串"Minimum"或"Maximum"。函数根据第二个形参的值返回数组中最小或最大元素的值。
不要使用Math。min或math。max。在数组中查找最小值的标准算法是假设第一个元素(索引0处)是当前的最小值。然后从第二个元素到最后一个元素重复处理数组。在每次迭代中,比较当前正在处理的元素与当前最小值。如果小于最小值,则将其设置为当前最小值。这样,在处理结束时,当前最小值保存数组中的最小元素值。一个类似的过程可以用来求最大值。测试你的代码。(1)
该函数根据其第二个参数执行两种不同的工作。这种函数编码方法的优缺点是什么?
我的答案(这不起作用):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Eng1003 Workshop Code Week 04</title>
<style>
#outputArea{
padding: .25em;
border: solid black 2px;
margin: 3em;
height: 20em;
width: 20em;
overflow-y: scroll;
font-family: arial "sans serif";
font-size: 1em;
color: rgb(50, 50, 250);
background-color: rgb(225,225,225) ;
}
</style>
</head>
<body>
<!-- -->
<div id="outputArea"></div>
<script>
function maximum(setOfValues){
var retVal = "" ;
var length = setOfValues.length ;
var max = 0 ;
for (var i = 0; i < length; i++){
if (setOfValues[i] > max){
max = setOfValues[i] ;
}
}
retVal = max ;
return retVal ;
}
function minimum(setOfValues){
var retVal = "";
var length = setOfValues.length ;
var min = 0 ;
for (var i = 0; i < length; i++){
if (setOfValues[i] < min){
min = setOfValues[i] ;
}
}
retVal = min;
return retVal ;
}
function extremeValue(setOfValues, command){
var outString = "" ;
var retVal = "" ;
if (command = "Maximum"){
outString = "The maximum value is " + maximum(setOfValues) + "." ;
} else if (command = "Minimum"){
outString = "The minimum value is " + minimum(setOfValues) + "." ;
} else {
outString = "Sorry, but your command is unclear. Please ensure that your input is either 'Maximum' or 'Minimum'." ;
}
retVal = outString ;
return retVal ;
}
var target = document.getElementById("outputArea") ;
var inputCommand = prompt("What is your command?") ;
var inputValues = [10,30,500, 1000] ;
var finalAnswer = "" ;
finalAnswer = extremeValue(inputValues, inputCommand) ;
target.innerHTML = finalAnswer ;
</script>
</body>
问题在于您检查提示值的方式:
if (command = "Minimum")
if (command = "Maximum")
在这里,您将字符串分配给command
。代码应该是(假设我们使用strict equality
):
if (command === "Minimum")
if (command === "Maximum")
演示在HTML页面中,按如下方式调用Result函数:
<script>
Result.init();
</script>
var Result = function () {
var maximum = function (array) {
var val = 0;
for (var i = 0; i < array.length; i++) {
if (array[i] > val) {
val = array[i];
}
}
return val;
}
var minimum = function (array) {
var val = 0;
for (var i = 0; i < array.length; i++) {
val = array[i];
if (array[i] < val) {
val = array[i];
}
}
return val;
}
var start = function () {
var inputValues = [10, 30, 500, 1000];
var min = minimum(inputValues);
var max = maximum(inputValues);
}
return {
init: function () {
start();
}
};
}();