我的JavaScript无效!救命 :(

时间:2015-08-19 11:27:38

标签: javascript arrays function loops for-loop

我是新来的。我花了一整天的时间试图找出我的代码有什么问题。是的,这可能是一个简单的问题,因为我刚刚在一个月前创建了JavaSript。无论如何,非常感谢您帮助我识别代码中的错误!

=============================================== ===========================

问题:

编写一个名为extremeValue的函数。它需要2个参数。第一个是整数数组(您不需要验证这一点)。第二个参数是字符串“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>

2 个答案:

答案 0 :(得分:3)

问题在于您检查提示值的方式:

if (command = "Minimum")
if (command = "Maximum")

您可以字符串分配给command。代码应该是(假设我们正在使用strict equality):

if (command === "Minimum")
if (command === "Maximum")

DEMO

答案 1 :(得分:0)

在您的HTML页面中,调用结果函数,如下所示:

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