在JavaScript中查找数组中的最大值

在JavaScript中查找数组中的最大值,javascript,Javascript,有没有一种简单的方法可以在JavaScript中找到下面给出的数组中的最大值 [3,4,[22,21],5,9,5] Math.max.apply(null,numbers)给出了NaN您的示例是一个数组,另一个数组嵌套一层深。假设只有一个嵌套级别,首先是您,然后对其应用Math.max技巧: var a=[3,4,22,21,5,9,5]; var max=Math.max.apply(Math,[].concat.apply([],a)); 控制台日志(最大值)这里有一个解决方案,它使用

有没有一种简单的方法可以在JavaScript中找到下面给出的数组中的最大值

[3,4,[22,21],5,9,5]

Math.max.apply(null,numbers)
给出了
NaN

您的示例是一个数组,另一个数组嵌套一层深。假设只有一个嵌套级别,首先是您,然后对其应用
Math.max
技巧:

var a=[3,4,22,21,5,9,5];
var max=Math.max.apply(Math,[].concat.apply([],a));

控制台日志(最大值)这里有一个解决方案,它使用处理嵌套数组的
reduce
版本

函数嵌套减少(数组、fn、初始值){
返回数组.reduce(函数(结果,elt){
返回fn(结果,数组.isArray(elt)?嵌套导出(elt,fn,初始):elt;
},首字母);
}

log(nestedReduce([3,4,22,21,5,9,5],Math.max,-Infinity))可以将递归用于

这适用于多个嵌套数组

var数组=[3,4,22,21,5,9,5,42]],
maxValue=array.reduce(函数max(r,a,i){
var v=数组.isArray(a)?a.reduce(最大值,未定义):a;
返回!i | | r我会这样做

函数getMax(a){ 返回Math.max(…a.map(e=>Array.isArray(e)?getMax(e):e)); } var-arr=[3,4,22,21,5,9,5,42,41];
console.log(getMax(arr))
[22,21]
不是一个数字。在确定最大值时,你应该如何计算它?@KT B:这里的教训是:1。问问题时要准确。2.包括预期结果。3.如果需要的话,请在询问后留下来澄清。53分钟前,如果你不清楚你在问什么,就应该关闭它,然后走到海报旁,你还活着吗?为了保持
Math.max
的语义,空数组的最大值应该是
-Infinity
,而不是
undefined
。这也允许您跳过
!我
check.就连我都没用过reduce-:)@torazaburo:的确如此。我已经补充了这个警告。