当前位置: 首页 > 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.lryc.cn/news/616109.html

相关文章:

  • Elasticsearch 搜索模板(Search Templates)把“可配置查询”装进 Mustache
  • 【AI学习从零至壹】AI调用MCP抓包分析pcap原始报文
  • Spring Boot 开发三板斧:POM 依赖、注解与配置管理
  • 我如何从安全运维逆袭成企业CSO
  • 专题二_滑动窗口_串联所有单词的子串
  • SQL约束:数据完整性的守护者
  • 编程基础之多维数组——同行列对角线的格
  • 2.变量和常量
  • 【秋招笔试】2025.08.09美团秋招算法岗机考真题-第二题
  • 深度解析1688关键字搜索API接口:技术实现与应用探索
  • 电脑本地摄像头做成rtsp流调用测试windows系统中
  • 托福阅读记录
  • Shell脚本-四则运算符号
  • spring-boot-starter-data-redis 与 org.redisson 区别 联系
  • Shell脚本-数组定义
  • 数据结构:栈和队列(Stack Queue)基本概念与应用
  • 从0开始的中后台管理系统-5(userList页面功能实现)
  • JS数组排序算法
  • 第三章 向量
  • ECharts Y轴5等分终极解决方案 - 动态适配缩放场景
  • 计算机网络:(十四)传输层(下)详细讲解TCP报文段的首部格式,TCP 可靠传输的实现与TCP 的流量控制
  • 一些js数组去重的实现算法
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 系统架构设计师备考之架构设计高级知识
  • Flink提交流程全解析:从模式到实践
  • DevOps:从GitLab .gitlab-ci.yml 配置文件到CI/CD
  • [论文阅读] 人工智能 + 软件工程 | 大型语言模型对决传统方法:多语言漏洞修复能力大比拼
  • FlinkSQL Joins全解析
  • 从MySQL到大数据平台:基于Spark的离线分析实战指南
  • Spark学习(Pyspark)