【JS、数组】flat的基本用法

flat() 是 JavaScript 数组的一个方法,用于将嵌套的数组"扁平化"到指定的深度。默认情况下,flat() 会将数组扁平化一层(即深度为 1)。也可以通过传递一个参数来指定要扁平化的深度。

基本用法

javascript 复制代码
const arr = [1, [2, [3, [4, 5]]], 6];

// 默认深度为 1
const flatArr1 = arr.flat();
console.log(flatArr1); // 输出: [1, 2, [3, [4, 5]], 6]

// 指定深度为 2
const flatArr2 = arr.flat(2);
console.log(flatArr2); // 输出: [1, 2, 3, [4, 5], 6]

// 指定深度为 Infinity,完全扁平化
const flatArrInfinity = arr.flat(Infinity);
console.log(flatArrInfinity); // 输出: [1, 2, 3, 4, 5, 6]

参数

  • depth (可选):指定要扁平化的深度。默认值为 1。如果设置为 Infinity,则会将数组完全扁平化,直到所有嵌套的数组都被展开。

示例

示例 1: 默认深度为 1
javascript 复制代码
const arr1 = [1, [2, 3], [4, [5, 6]]];
const flatArr1 = arr1.flat();
console.log(flatArr1); // 输出: [1, 2, 3, 4, [5, 6]]
示例 2: 指定深度为 2
javascript 复制代码
const arr2 = [1, [2, [3, 4]], [5, 6]];
const flatArr2 = arr2.flat(2);
console.log(flatArr2); // 输出: [1, 2, 3, 4, 5, 6]
示例 3: 完全扁平化
javascript 复制代码
const arr3 = [1, [2, [3, [4, [5, 6]]]]];
const flatArr3 = arr3.flat(Infinity);
console.log(flatArr3); // 输出: [1, 2, 3, 4, 5, 6]

注意事项

  • flat() 方法不会改变原数组,而是返回一个新的扁平化后的数组。
  • 如果数组中包含非数组元素,flat() 会保留这些元素。

兼容性

flat() 方法在现代浏览器和 Node.js 中都得到了广泛支持,但在一些较旧的环境中可能不可用。如果你需要在不支持 flat() 的环境中使用它,可以使用 polyfill 或其他替代方法。

替代方法

如果你需要在不支持 flat() 的环境中实现类似的功能,可以使用递归函数:

javascript 复制代码
function flattenArray(arr, depth = 1) {
  return arr.reduce((acc, val) => {
    if (Array.isArray(val) && depth > 0) {
      acc.push(...flattenArray(val, depth - 1));
    } else {
      acc.push(val);
    }
    return acc;
  }, []);
}

const arr = [1, [2, [3, [4, 5]]], 6];
const flatArr = flattenArray(arr, Infinity);
console.log(flatArr); // 输出: [1, 2, 3, 4, 5, 6]
相关推荐
君顾116 分钟前
西安24小时自助健身房系统软件开发实战:需求分析与技术落地指南
java·开发语言·健身房
传奇开心果编程17 分钟前
【Rust入门练中学】第4课:函数与所有权入门
开发语言·学习·rust
重生之小比特1 小时前
【初阶C++】stack和queue
开发语言·c++·vs·queue
晓得迷路了1 小时前
栗子前端技术周刊第 147 期 - React Router 8.4、Vite 云服务攻击、pnpm 12.4...
前端·javascript·react.js
爱喝水的鱼丶1 小时前
SAP-ABAP:MM 模块供应商主数据开发:字段扩展、分级管控与同步接口开发
开发语言·性能优化·接口·sap·abap·增强·经验交流
小小数媒成员1 小时前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
大黄说说1 小时前
告别卡顿:Android UI 性能优化,布局层级过度绘制实战排查
开发语言
千谦阙听1 小时前
【 C++篇】:模板初阶——泛型编程、函数模板与类模板
开发语言·c++·学习·visual studio
SEO_juper1 小时前
2026年用Python检测网站薄内容与重复页:用向量相似度找出“搜索引擎眼中一样“的页面(附完整代码)
开发语言·前端·seo·独立站·谷歌优化
老王爱玩车1 小时前
第6讲:数组和函数实践-----控制台扫雷
c语言·开发语言·学习