在Javascript数组中查找绝对最大值

时间:2021-05-16 21:27:42

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));
});