Fresheyeball Fresheyeball - 4 months ago 22
Javascript Question

Get largest value in multi-dimensional array javascript or coffeescript

I have an array that looks like the following:

array = [[1, 5], [4, 7], [3, 8], [2, 3],
[12, 4], [6, 6], [4, 1], [3, 2],
[8, 14]]


What I need is the largest number from the first value of the sets, so in this case
12
.
Looking at some examples online, the best way I saw to accomplish this is :

Math.max.apply Math, array


Problem is, this only works with single dimensional arrays. How would I impliment this for my senario? (jquery allowed)




The end solution:

It wasn't part of the question, but I needed both the min and max from the array, and that changes things a little.

unless device.IE
justTheDates = magnitudeArray.map (i) -> i[0]
@earliest = Math.min.apply Math, justTheDates
@latest = Math.max.apply Math, justTheDates
else
@earliest = magnitudeArray[0][0]
@latest = magnitudeArray[0][0]
for magnitudeItem in magnitudeArray
@earliest = magnitudeItem[0] if magnitudeItem[0] < @earliest
@latest = magnitudeItem[0] if magnitudeItem[0] > @latest

Answer

You can use .reduce()...

array.reduce(function(max, arr) { 
    return Math.max(max, arr[0]); 
}, -Infinity)

Here's a version that doesn't use Math.max...

array.reduce(function(max, arr) {
    return max >= arr[0] ? max : arr[0];
}, -Infinity);

...and a jsPerf test.