2015-09-16 87 views
1

我試圖用每個數組中最大的元素返回arr,但是我收到一條錯誤消息。謝謝。在數組陣列中查找最大值

function largestOfFour(arr) { 
    for (var i = 0; i<arr.length; i++) { 
    return Math.max.apply(Math, arr[i]); 
    } 
} 

largestOfFour([1,2,4],[23,22,0])

TypeError: second argument to Function.prototype.apply must be an array

+0

'largestOfFour'期待一個參數,而你傳遞了兩個。 – hindmost

回答

1

使用map功能

array.map(function(array) { 
    return Math.max.apply(Math, array) 
}) 
+0

謝謝,這幫了很多。但它是如何知道迭代這兩個數組? – Mukul215

1

目前,你發送兩個參數來largestOfFour,但你應該只發一個,每個索引處的數組。

largestOfFour([[1,2,4],[23,22,0]])

爲了得到你要尋找的返回結果。

function largestOfFour(arr) { 
    var returnArray = [] 
    for (var i = 0; i<arr.length; i++) { 
    returnArray.push(Math.max.apply(Math, arr[i])); 
    } 

    return returnArray; 
} 
+0

謝謝,解決了一個問題。但迭代沒有通過並返回'[4,23]' – Mukul215

+0

只是做了一個編輯,所以它返回你要找的東西 – tcigrand

1

你不通過你的函數數組的數組 - 你傳遞這兩個數組。 :)

嘗試這種情況:

largestOfFour([[1,2,4],[23,22,0]]) 
      ^    ^

另外,largestOfFour,所定義,返回最大運行在第一時間 - 實際上,陣列的陣列中的返回第一陣列的最大值。

要做到這一點,你可以每次保存最大值,然後返回最大值。

,或者利用加入的()的嵌套數組的視扁,做這樣的:

Math.max.apply(null, a.join().split(','))