当前位置: 首页 > news >正文

JS实现数组扁平化

  1. ES6 的 Array.prototype.flat()

具体说明:

  • 默认情况下,flat() 会将数组扁平化 一层 嵌套。
  • 可以传一个参数 depth,表示扁平化的深度,默认是 1。

举例:

const arr = [1, 2, [3, 4]];
console.log(arr.flat());  // 输出: [1, 2, 3, 4]const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat());       // 默认一层扁平化,输出: [1, 2, 3, 4, [5, 6]]
console.log(arr2.flat(2));      // 扁平化两层,输出: [1, 2, 3, 4, 5, 6]

如果想完全展开所有层,可以用 Infinity 作为参数:

console.log(arr2.flat(Infinity));  // 展开所有嵌套层
  1. ES6 之前的写法(递归实现)
function flatten(arr) {let result = [];for (let i = 0; i < arr.length; i++) {if (Array.isArray(arr[i])) {// 递归展开result = result.concat(flatten(arr[i]));} else {result.push(arr[i]);}}return result;
}// 测试
const arr = [1, [2, [3, 4], 5], 6];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
  1. ES6 及之后的写法(用 reduce 和扩展运算符)
const flatten = (arr) => arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);// 测试
const arr = [1, [2, [3, 4], 5], 6];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
http://www.dtcms.com/a/324957.html

相关文章:

  • 计算二分类误差时的常见错误及解决方案
  • ubuntu22.04+samba
  • VMware 使用 Ubuntu 一段时间后逐渐卡顿、甚至卡死的问题
  • sqli-labs-master/Less-51~Less-61
  • 解读 GPT-5:从“博士级 AI 专家”能力到 OpenAI API Key 获取与实践(提示工程→性能调优全流程)
  • MySQL自增ID与UUID的区别及其在索引分裂中的表现与优化
  • W3D引擎游戏开发----从入门到精通【23】
  • 2013年考研数学(二)真题
  • A#语言详解
  • 相比于传统的全波分析,特征模分析具有哪些优点
  • vue如何监听localstorage
  • 博览会(树形DP)
  • 机器学习——标准化、归一化
  • Spring Boot 事务详解:原理与实操指南
  • AQS(AbstractQueuedSynchronizer)底层源码实现与设计思想
  • 第三章-提示词:从0到1,提示词实训全攻略,解锁大语言模型无限潜能(14/36)
  • MyBatis Mapper核心组件协作关系深度解析
  • Java条件判断与用户交互实战案例
  • 【经典算法】二叉树最小深度详解:递归解法与可视化分析
  • 深入解析C#并行编程:从并行循环到异步编程模式
  • PyCATIA深度解析:基于装配截面自动化创建参考几何平面群的专业方案
  • 锂电生产设备健康管理:基于预测性维护的智能化解决方案​
  • 【github.io静态网页 怎么使用 github.io 搭建一个简单的网页?】
  • Python与MySQL数据库交互实践:自动化数据插入系统
  • GPU版的Pytorch安装(Win11)
  • SpringBoot项目自定义静态资源映射规则
  • 【嵌入式】Linux的常用操作命令 (1)
  • SAP 121移动类型的说明
  • C野指针的概念与应对(源头、阻隔、定位)
  • STM32定时器与延时系统完整笔记