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

如何在JavaScript中提取多维数组数字且不使用多层循环?

扁平化嵌套数组(无需多层循环)

当然可以,不用写多层嵌套循环也能实现数组扁平化,下面是几种实用方法:

1. 用ES6原生flat()方法

这是最简洁的方案,flat()方法可以直接将嵌套数组扁平化,传入参数Infinity就能处理任意深度的嵌套:

const nestedArr = [1, 2, [3, 4, [5, 6, [7, 8, [9]]]], 10];
const flatArr = nestedArr.flat(Infinity);
console.log(flatArr); // 输出: [1,2,3,4,5,6,7,8,9,10]

2. 递归+forEach实现

通过递归遍历数组元素,遇到子数组就递归处理,遇到普通元素直接收集,全程只有单层遍历:

function flatten(arr) {
  const result = [];
  arr.forEach(item => {
    if (Array.isArray(item)) {
      // 递归处理子数组,合并结果
      result.push(...flatten(item));
    } else {
      result.push(item);
    }
  });
  return result;
}

const nestedArr = [1, 2, [3, 4, [5, 6, [7, 8, [9]]]], 10];
console.log(flatten(nestedArr)); // 输出: [1,2,3,4,5,6,7,8,9,10]

3. 递归+reduce实现

用reduce来累加结果,逻辑和上面类似,写法更紧凑:

const flatten = arr => arr.reduce((acc, curr) => {
  return acc.concat(Array.isArray(curr) ? flatten(curr) : curr);
}, []);

const nestedArr = [1, 2, [3, 4, [5, 6, [7, 8, [9]]]], 10];
console.log(flatten(nestedArr)); // 输出: [1,2,3,4,5,6,7,8,9,10]

这些方法都没有手动编写多层嵌套循环,而是通过递归或者原生API来处理任意深度的嵌套数组。

内容的提问来源于stack exchange,提问作者Pooja Shingala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:10:37