Javascript max() for array column
This is a great application for Array.prototype.reduce
:
max = data.reduce(function(previousVal, currentItem, i, arr) {
return Math.max(previousVal, currentItem[0]);
}, Number.NEGATIVE_INFINITY);
This also avoids the bug in your code that would happen if all the values in data
are less than 0
. You should be comparing against Number.NEGATIVE_INFINITY
rather than 0
.
Alternatively, you could normalize the data before reducing to the max value:
max = data.map(function (d) {
return d[0];
}).reduce(function (p, c, i, arr) {
return Math.max(p, c);
});
I would write it as such:
Math.max.apply(Math, array.map(v => v[0]));
The array.map
will transform the original array based on your picking logic, returning the first item in this case. The transformed array is then fed into Math.max()
To avoid creating a new array, you can also reduce the array to a single value:
array.reduce((max, current) => Math.max(max, current[0]), -Infinity)
As you can see, we need to add the initial value of -Infinity
, which is returned if the array is empty.