You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何获取任意深度多层嵌套数组的最大与最小元素

JavaScript多层嵌套数组求最大/最小值实现方案

需求说明

需要对任意深度的嵌套数字数组,提取所有元素后计算最大值与最小值,待处理示例数组如下:
var arry = [1,2,[14,56,34,[48,98]],[14,16,11,[18,81]],34,35]

实现思路

  • 第一步将多层嵌套数组拍平为一维数组,ES2019+ 支持Array.prototype.flat()方法,传入参数Infinity即可拍平任意深度的嵌套结构
  • 第二步对拍平后的数组,配合Math.max()、Math.min()方法计算极值即可

高版本ES最简实现代码

// 示例数组
const arry = [1,2,[14,56,34,[48,98]],[14,16,11,[18,81]],34,35];
// 拍平任意深度嵌套数组
const flatArry = arry.flat(Infinity);
// 计算最大值、最小值
const maxValue = Math.max(...flatArry);
const minValue = Math.min(...flatArry);

console.log(maxValue); // 输出结果:98
console.log(minValue); // 输出结果:1

低版本兼容实现方案

如果运行环境不支持flat方法和扩展运算符,可以用递归+apply方法实现:

// 自定义递归拍平数组方法
function flatten(arr) {
  let result = [];
  for (let item of arr) {
    if (Array.isArray(item)) {
      result = result.concat(flatten(item));
    } else {
      result.push(item);
    }
  }
  return result;
}

const arry = [1,2,[14,56,34,[48,98]],[14,16,11,[18,81]],34,35];
const flatArry = flatten(arry);
const maxValue = Math.max.apply(null, flatArry);
const minValue = Math.min.apply(null, flatArry);

注意事项

  • 需确保数组内所有非数组元素都是数字类型,否则计算极值会返回NaN
  • 空数组场景需要提前做边界判断,避免Math.max()返回-Infinity、Math.min()返回Infinity的异常结果

内容的提问来源于stack exchange,提问作者Sooraj s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:03