2017-05-28 87 views
2

我的函數'extremeValue'需要2個參數,一個數組和一個字符串「Maximum」或「Minimum」,並根據該字符串返回最大值或最小值陣列。我使用了一個示例數組'values'來通過函數,儘管它的最小值很好,但最大值是數組的最後一個值。我的代碼有什麼問題?For循環未找到數組的最大值(Javascript)

var values = [4, 3, 6, 12, 1, 3, 7]; 
 
      
 
function extremeValue(array, maxmin) { 
 
\t if (maxmin === "Maximum") { 
 
\t \t var max = array[0]; 
 
\t \t for (var i = 1; i < array.length; i++) { 
 
\t \t \t if (array[i] > array[i-1]) { 
 
\t \t \t \t max = array[i]; 
 
\t \t \t } 
 
\t \t } 
 
\t \t return max; 
 
\t } 
 
\t else if (maxmin === "Minimum") { 
 
\t \t var min = array[0]; 
 
\t \t for (var j = 1; j < array.length; j++) { 
 
\t \t \t if (array[j] < array[j-1]) { 
 
\t \t \t \t min = array[j]; 
 
\t \t \t } 
 
\t \t } 
 
\t \t return min; 
 
\t } 
 
} 
 
      
 
console.log(extremeValue(values, "Maximum")); 
 
console.log(extremeValue(values, "Minimum"));

回答

3

變化與最大值檢查。

if (maxmin === "Maximum") { 
    var max = array[0]; 
    for (var i = 1; i < array.length; i++) { 
     if (array[i] > max) { //not just before 'array[i-1]' 
      max = array[i]; 
     } 
    } 
    return max; 
} 

OR

只需使用

Math.max.apply(Math, values); 

從values.and

Math.min.apply(Math, values); 

最低值找到最大。

+0

@賈裏德 - 史密斯感謝您的編輯。 – AdhershMNair

+1

沒問題。好答案。 –

0

在每個循環中,您一定不要項目之前比較最大(或最小)值的項目,:

var values = [4, 3, 6, 12, 1, 3, 7]; 

function extremeValue(array, maxmin) { 
    if (maxmin === "Maximum") { 
     var max = array[0]; 
     for (var i = 1; i < array.length; i++) { 
      if (array[i] > max) { 
       max = array[i]; 
      } 
     } 
     return max; 
    } 
    else if (maxmin === "Minimum") { 
     var min = array[0]; 
     for (var j = 1; j < array.length; j++) { 
      if (array[j] < min) { 
       min = array[j]; 
      } 
     } 
     return min; 
    } 
} 

console.log(extremeValue(values, "Maximum")); 
console.log(extremeValue(values, "Minimum")); 
0

另外,您可以使用數學函數縮短代碼:

var values = [4, 3, 6, 12, 1, 3, 7]; 
 
      
 
function extremeValue(array, maxmin) { 
 
\t if (maxmin === "Maximum") { 
 
      return Math.max.apply(null, array); 
 
\t } 
 
\t else if (maxmin === "Minimum") { 
 
\t return Math.min.apply(null, array); 
 
\t } 
 
} 
 
console.log(extremeValue(values, "Maximum")); 
 
console.log(extremeValue(values, "Minimum"));

相關問題