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

实现数组的扁平化

文章目录

  • 1 实现数组的扁平化
    • 1.1 递归
    • 1.2 reduce
    • 1.3 扩展运算符
    • 1.4 split和toString
    • 1.5 flat
    • 1.6 正则表达式和JSON

1 实现数组的扁平化

1.1 递归

通过循环递归的方式,遍历数组的每一项,如果该项还是一个数组,那么就继续递归遍历,实现数组的每一项的连接。

let arr = [1, [2, [3, 4, 5]]];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;
}
flatten(arr);

1.2 reduce

简化第1种方法的代码,用reduce()来实现数组的拼接。

function flatten(arr) {return arr.reduce(function(prev, next) {return prev.concat(Array.isArray(next) ? flatten(next) : next);}, []);
}

1.3 扩展运算符

扩展运算符和some()的方法共同使用,逐层展开数组。

function flatten(arr) {while (arr.some(item => Array.isArray(item))) {arr = [].concat(...arr);}return arr;
}

1.4 split和toString

先用toString()将数组转换成用逗号分隔的字符串,然后再用split()方法把字符串重新转换为数组。

function flatten(arr) {return arr.toString().split(',');
}

1.5 flat

ES6中flat方法的语法:arr.flat([depth])

其中depth是可以传递数组的展开深度,默认是1,即展开1层数组。

如果层数不确定,参数可以传进Infinity,代表不论多少层都要展开。

function flatten(arr) {return arr.flat(Infinity);
}

1.6 正则表达式和JSON

先用JSON.stringify()的方法将数组转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用JSON.parse()把它转换成数组。

function flatten(arr) {let str = JSON.stringify(arr);str = str.replace(/(\[|\])/g, '');str = '[' + str + ']';return JSON.parse(str);
}
http://www.lryc.cn/news/531695.html

相关文章:

  • 登录认证(5):过滤器:Filter
  • pytorch实现门控循环单元 (GRU)
  • Word List 2
  • 机器学习常用包numpy篇(四)函数运算
  • CSS in JS
  • TCP 丢包恢复策略:代价权衡与优化迷局
  • 面经--C语言——内存泄漏、malloc和new的区别 .c文件怎么转换为可执行程序 uart和usart的区别 继承的访问权限总结
  • Denavit-Hartenberg DH MDH坐标系
  • 力扣动态规划-20【算法学习day.114】
  • 计算机视觉-边缘检测
  • 文字加持:让 OpenCV 轻松在图像中插上文字
  • 掌握 HTML5 多媒体标签:如何在所有浏览器中顺利嵌入视频与音频
  • 在Mac mini M4上部署DeepSeek R1本地大模型
  • 【电脑系统】电脑突然(蓝屏)卡死发出刺耳声音
  • Docker使用指南(二)——容器相关操作详解(实战案例教学,创建/使用/停止/删除)
  • Java中的常见对象类型解析
  • Dijkstra算法解析
  • C++ Primer 多维数组
  • maven mysql jdk nvm node npm 环境安装
  • SQL Server中RANK()函数:处理并列排名与自然跳号
  • 如何运行Composer安装PHP包 安装JWT库
  • 最新功能发布!AllData数据中台核心菜单汇总
  • 【OS】AUTOSAR架构下的Interrupt详解(上篇)
  • 大数据挖掘--两个角度理解相似度计算理论
  • Win10微软商店重新安装指南
  • 操作系统和中间件的信息收集
  • 项目集成Spring Security授权部分
  • 5. k8s二进制集群之ETCD集群部署
  • MV结构下设置Qt表格的代理
  • 二维数组 C++ 蓝桥杯