【问题标题】:My JavaScript is not working! Help :(我的 JavaScript 不工作!帮助 :(
【发布时间】:2015-08-19 11:27:38
【问题描述】:

我是新来的。我花了一整天的时间试图找出我的代码出了什么问题。是的,这对你来说可能是一个简单的问题,因为我大约一个月前才开始使用 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>

【问题讨论】:

    标签: javascript arrays function loops for-loop


    【解决方案1】:

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

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

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

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

    DEMO

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        • 1970-01-01
        • 2018-04-07
        • 2022-07-07
        • 1970-01-01
        相关资源
        最近更新 更多