2016-11-23 33 views
-2

我有以下代碼:的js陣列總是返回最高值

var max_value = function(array) { 
    var result = array[0]; 

    for (var i = 0; i < array.length; i++) { 
    if (array[i] > result) { 
     result = array[i]; 
    }; 
    } 
    return result; 
} 
console.log(max_value([1, 10, 9])); 

此返回10任一這樣的:

console.log(max_value([1, 10, 9])); 

console.log(max_value([10, 1, 9])); 

如果條件爲真應該返回最後一個數組的數目? (在最後一種情況下爲9,看起來像返回的最高數字)

+1

嗯。你沒有檢查當前的值。但以前存儲的最高值。 –

+2

爲什麼要'9'返回? –

+1

這個條件永遠不會是真的,因爲如果你比較結果,即10,和數組[3],即9。10高於9,這就是你擁有的函數總是會返回最高的原因。 – rafaelcpalmeida

回答

2

您可以使用本機Array.protoype.sort爲您完成辛苦的工作。

var max_value = function(array) { 
 
    return array.sort((a, b) => a - b).pop() 
 
} 
 
console.log(max_value([1, 10, 9, 5, 3, 2, 6, 8, 4]));

+1

排序是(在最好的情況下) ** O(nlogn)**,但只需** O(n)**一個循環。順便說一句,該操作沒有說明,他在找什麼。 –

4

var arrV = [9,10,2] 
 
console.log(Math.max(...arrV));

一個建議,你可以用短手操作

var arrV = [9,10,2] 
console.log(Math.max(...arrV)); 
+3

這應該是被接受的答案。非常有創意的 – synthet1c

+0

甚至Math.max.apply(null,[10,9,2]);將工作 :) –