I am looking for a nice way to find the maximum ABSOLUTE value of an array.
我正在寻找一种很好的方法来找到数组的最大ABSOLUTE值。
My array is i.e.
我的阵列是
var array = [10,20,40,-30,-20,50,-60];
Then:
Math.max.apply(null,array);
Will result in '50'. But, actually, I want it to return '60'.
将导致'50'。但实际上,我希望它能够返回'60'。
The option is to create a second array using Math.abs, but actually I am wondering if the apply function can be combined, so it is one elegant solution.
选项是使用Math.abs创建第二个数组,但实际上我想知道是否可以组合apply函数,所以它是一个优雅的解决方案。
2 个解决方案
#1
16
Math.max.apply(null, array.map(Math.abs));
If you target browsers that don't support Array.prototype.map (IE<=8), use the polyfill or a library like sugar.js.
如果您的目标浏览器不支持Array.prototype.map(IE <= 8),请使用polyfill或像sugar.js这样的库。
#2
3
Try this:
var array = [10,20,40,-30,-20,50,-60];
var absMax = array.reduce(function(max, item){
return Math.max(Math.abs(max),Math.abs(item));
});
#1
16
Math.max.apply(null, array.map(Math.abs));
If you target browsers that don't support Array.prototype.map (IE<=8), use the polyfill or a library like sugar.js.
如果您的目标浏览器不支持Array.prototype.map(IE <= 8),请使用polyfill或像sugar.js这样的库。
#2
3
Try this:
var array = [10,20,40,-30,-20,50,-60];
var absMax = array.reduce(function(max, item){
return Math.max(Math.abs(max),Math.abs(item));
});