Min And Max In Multidimensional Array
My array is: var a = new Array(); a[0] = {x: 10,y: 10}; a[1] = {x: 20,y: 50}; a[2] = {x: 30,y: 20}; a[3] = {x: 10,y: 10}; var min = Math.min.apply(null, a.x) doesn't work. Some id
Solution 1:
You had the right idea with .apply
but you need to pass a collection of the x
values.
var xVals = a.map(function(obj) { return obj.x; });
var min = Math.min.apply(null, xVals);
The .map()
method makes a new Array comprised of whatever you returned in each iteration.
[10, 20, 30, 10]
Then passing the Array as the second argument to .apply
will distribute the members of the Array as individual arguments. So it's as though you did this:
Math.min(10, 20, 30, 10) // 10
But since you need to .map()
, you might as well skip the Math.min
, and just use .reduce
instead.
var min = a.reduce(function(min, obj) {
return obj.x < min ? obj.x : min;
}, Infinity);
Post a Comment for "Min And Max In Multidimensional Array"