What is the best way to get the min and max of an array into two variables? My current method feels lengthy:
var mynums = [0,0,0,2,3,4,23,435,343,23,2,34,34,3,34,3,2,1,0,0,0]
var minNum = null;
var maxNum = null;
for(var i = 0; i < mynums.length; i++) {
if(!minNum) {
minNum = minNum[i];
maxNum = maxNum[i];
} else if (mynums[i] < minNum) {
minNum = mynums[i];
} else if (mynums[i] > minNum && mynums[i] > maxNum) {
maxNum = mynums[i]
}
}
Other posts that appear to 'address' this seem to be old and I feel like there must be a better way in 2017.
You can just use Math.max()
and Math.min()
For an array input, you can do
var maxNum = Math.max.apply(null, mynums);
var minNum = Math.min.apply(null, mynums);
You can use reduce()
and find both min and max at the same time.
var mynums = [0, 0, 0, 2, 3, 4, 23, 435, 343, 23, 2, 34, 34, 3, 34, 3, 2, 1, 0, 0, 0] var {min, max} = mynums.reduce(function(r, e, i) { if(i == 0) r.max = e, r.min = e; if(e > r.max) r.max = e; if(e < r.min) r.min = e; return r; }, {}) console.log(min) console.log(max)
As an alternative, use Lodash min
and max
functions.
var mynums = [0,0,0,2,3,4,23,435,343,23,2,34,34,3,34,3,2,1,0,0,0];
var minNum = _.min(mynums); // 0
var maxNum = _.max(maxNum); // 435
And take a look at minBy
and maxBy
functions which also could be very useful.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.