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

9
我是一名有帮助的助手,以下是您需要翻译的内容:

我希望找到一种好的方法来查找数组的最大绝对值。

我的数组例子:

var array = [10,20,40,-30,-20,50,-60];

然后:

Math.max.apply(null,array);

这将返回'50'。但实际上,我希望它返回'60'。

解决方法是使用Math.abs创建第二个数组,但我在想是否可以结合apply函数,使其成为一个优雅的解决方案。

3个回答

24
Math.max.apply(null, array.map(Math.abs));

如果你的目标浏览器不支持Array.prototype.map (IE<=8),请使用polyfill或类似sugar.js的库。


3

试试这个:

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

谢谢,上面的答案更加优雅,但是你的回答给了我一些不错的“啊哈”体验。还有很多关于JS的知识需要学习。 - Riël

3

这是如何实现的

var array = [10,20,40,-30,-20,50,-60];    
return Math.max(...array.map(a => Math.abs(a)))

绝对是2020年最好的方式 :) - v1vendi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接