javscript 数组扁平化的实现

作者:我们不动 时间:2024-04-28 10:18:49 

join toString

该两种方法会将数组元素的类型转换为字符串


var arr = [1, [2, [3, [4, 5]]], 6];
console.log(arr.join()); //1,2,3,4,5,6
console.log(arr.toString()); //1,2,3,4,5,6

var flatArr = arr.join().split(','); // ["1", "2", "3", "4", "5", "6"]
var flatArr = arr.toString().split(',');// ["1", "2", "3", "4", "5", "6"]

缺点: 转换为一维数组后数组元素转换为字符串,需要重新转换数组元素为Number类型

es6 flat

Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。


arr.flat(Infinity); // [1, 2, 3, 4, 5, 6]

缺点: flat 方法的兼容需要考虑下

reduce 递归遍历


function flatten(arr) {
 return arr.reduce((acc, cur)=> { // 遇到嵌套就递归
   return acc.concat(Array.isArray(cur) ?
   flatten(cur) : cur);  
 }, []);
}
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]

递归遍历


function flatten(arr) {

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

return arr;
}

console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]

来源:https://segmentfault.com/a/1190000021673310

标签:javscript,数组扁平化
0
投稿

猜你喜欢

  • python通过opencv实现批量剪切图片

    2021-05-12 12:50:14
  • Django学习笔记之View操作指南

    2023-05-29 14:08:47
  • PHP程序员玩转Linux系列 使用supervisor实现守护进程

    2023-10-12 14:50:21
  • vue项目无法删除的问题及解决

    2024-05-02 17:08:36
  • Vue项目之学生管理系统实例详解

    2024-04-28 09:31:57
  • CSS灵活运行注释带来的益处

    2008-04-21 13:51:00
  • nodejs实现简单的gulp打包

    2024-05-11 10:16:22
  • Python使用re模块实现正则表达式操作指南

    2022-03-14 18:11:11
  • Bootstrap导航栏各元素操作方法(表单、按钮、文本)

    2023-08-15 05:14:27
  • pycharm设置python文件模板信息过程图解

    2023-03-21 14:46:22
  • vue中实现可编辑table及其中加入下拉选项

    2024-04-10 10:24:51
  • Python实现的删除重复文件或图片功能示例【去重】

    2023-12-25 00:49:07
  • 程序员的七种武器

    2008-11-01 17:13:00
  • 对Go语言中的context包源码分析

    2024-04-26 17:24:17
  • Python调用系统命令os.system()和os.popen()的实现

    2021-06-27 23:56:29
  • python字符串格式化方式解析

    2021-06-22 14:01:46
  • python实现多人聊天室

    2022-09-02 18:56:21
  • 详解MySql自连接,外连接,内连接 ,左连接,右连接

    2024-01-25 05:40:52
  • python绘制直线的方法

    2022-10-08 20:01:52
  • javascript forEach通用循环遍历方法

    2024-04-29 13:19:14
  • asp之家 网络编程 m.aspxhome.com