How to find the max/min of a nested array in javascript?
d3.js, javascript
Solution
If you have a nested array of numbers (`arrays = [[1, 2], [20, 3]]`), nest d3.max:
var max = d3.max(arrays, function(array) {
return d3.max(array);
});
Or equivalently, use array.map:
var max = d3.max(arrays.map(function(array) {
return d3.max(array);
}));
If you want to ignore string values, you can use array.filter to ignore strings:
var max = d3.max(arrays, function(array) {
return d3.max(array.filter(function(value) {
return typeof value === "number";
}));
});
Alternatively, if you know the string is always in the first position, you could use array.slice which is a bit more efficient:
var max = d3.max(arrays, function(array) {
return d3.max(array.slice(1));
});
Yet another option is to use an accessor function which returns `NaN` for values that are not numbers. This will cause d3.max to ignore those values. Conveniently, JavaScript's built-in `Number` function does exactly this, so you can say:
var max = d3.max(arrays, function(array) {
return d3.max(array, Number);
});
Problem
I want to find the maximum of a nested array, something like this: ``` a = [[1,2],[20,3]] d3.max(d3.max(a)) // 20 ``` but my array contains a text field that I want to discard: ``` a = [["yz",1,2],["xy",20,3]] d3.max(a) // 20 ```