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

如何在JavaScript中解构多层嵌套数组并转为一维数组?

三层嵌套数组转一维数组的实现方案

方法1:递归实现(支持任意层级嵌套)

递归是处理嵌套数组最通用的方案,不管数组嵌套多少层都能适配:

function flattenArray(arr) {
  let result = [];
  arr.forEach(item => {
    if (Array.isArray(item)) {
      result = result.concat(flattenArray(item));
    } else {
      result.push(item);
    }
  });
  return result;
}

// 测试示例
const nestedArr = [[[{name: "john"}],[{name: "jack"}]],[[{name: "joe"}],[{name: "bob"}]]];
const flatArr = flattenArray(nestedArr);
console.log(flatArr); // 输出:[{name: "john"},{name: "jack"},{name: "joe"},{name: "bob"}]

方法2:使用ES6的Array.prototype.flat()(简洁高效)

ES6新增的flat()方法可以直接扁平化数组,传入层级参数即可,这里嵌套3层所以传3:

const nestedArr = [[[{name: "john"}],[{name: "jack"}]],[[{name: "joe"}],[{name: "bob"}]]];
const flatArr = nestedArr.flat(3);
console.log(flatArr);

如果不确定数组的嵌套层级,也可以传入Infinity,自动展开所有层级:

const flatArr = nestedArr.flat(Infinity);

方法3:reduce结合递归(函数式风格)

用reduce简化递归逻辑,写法更紧凑:

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

// 测试示例
const nestedArr = [[[{name: "john"}],[{name: "jack"}]],[[{name: "joe"}],[{name: "bob"}]]];
console.log(flattenArray(nestedArr));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:01:02