# 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
``````

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.

http://jsfiddle.net/zerkms/HM7es/

``````var max = Math.max.apply(Math, arr.map(function(i) {
return i[0];
}));?
``````

So at first you use `array.map()` to convert the 2-dimensional array to a flat one, and after that use `Math.max()`

A simple solution using Underscore.js' `max` that avoids generating an intermediate array:

``````max = _(array).max(_.first)[0]
``````

(JSFiddle)

Using a comprehension in CoffeeScript:

``````Math.max.apply Math, (x[0] for x in array)
``````

Running example

Also, look at _underscore.js. Here is a link to the function _max().

• It is simply more efficient to read, write and maintain.

The best part about _underscore is that there are about another hundred helper functions similar to _max. Like sort.

Compare the syntax below:

``````var sortedObject = _.sortBy(object, function(val, key, object) {
return val;
});
``````

They are easy to chain, and interpret! (Like Douglas Crockford might suggest)

An excellent JSFIDDLE, was provided in this post by @Raynos.

If you are consistently conducting array operations with raw JavaScript, check out _underscore.js, it can greatly simplify your code.

Hope that helps, All the best! Nash

``````Array.prototype.maxX = function(){
return Math.max.apply(Math,this.map(function(o){return o[0];}));
};
``````

I know this is an old post, but if you (or someone else) want the largest number in the whole array, try with:

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

var max = array.reduce(function (max, arr) {
return max >= Math.max.apply(max, arr) ? max : Math.max.apply(max, arr);
}, -Infinity);
console.log(max);
``````

In this examlpe, it will return the value 14.

Sample Input: largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

``````function largestOfFour(arr) {

var largest = 0;
var largestArr = [];
for(var i=0; i<arr.length; i++){
for(var j=0; j<arr[i].length; j++){

if(largest < arr[i][j]){
largest = arr[i][j];
}
largestArr[i] = largest;
}
largest = 0;
}

return largestArr;
}
``````

You can populate largest numbers into new Array from two dim array.