博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6种方式实现JavaScript数组扁平化(flat)方法的总结
阅读量:4115 次
发布时间:2019-05-25

本文共 873 字,大约阅读时间需要 2 分钟。

需求:

多维数组=>一维数组 

let arr = [1, [2, [3, [4, 5]]], 6];let str = jsON.stringify(ary);

解决方案:

面对这个需求,我们有6种处理方式,希望这些方式方法可以给你一些启发。

第1种处理:直接的调用

arr.flat(Infinity);

注意:flat和flatMap方法为ES2019(ES10)方法,目前还未在所有浏览器完全兼容。

第2种处理

str.replace(/(\[\]))/g, '').split(',');

第3种处理

str = str.replace(/(\[\]))/g, '');str = '[' + str + ']';var ary = jsON.parse(str);

第4种处理:递归处理

let result = [];let fn = function(ary) {  for(let i = 0; i < ary.length; i++) }{    let item = ary[i];    if (Array.isArray(ary[i])){      fn(item);    } else {      result.push(item);    }  }}

第5种处理:用 reduce 实现数组的 flat 方法

function flatten(ary) {  return ary.reduce((pre, cur) => {    return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);  })}let ary = [1, 2, [3, 4], [5, [6, 7]]]console.log(ary.MyFlat(Infinity))

第6种处理:扩展运算符

while (ary.some(Array.isArray)) {  ary = [].concat(...ary);}

总结

这6种方式,你学会了吗?

学习更多技能

请点击下方公众号

转载地址:http://swdpi.baihongyu.com/

你可能感兴趣的文章
Linux基础系列-可执行程序的产生过程
查看>>
Linux基础系列-Kernel 初始化宏
查看>>
Linux子系统系列-I2C
查看>>
<iOS>关于自定义description的一点用法
查看>>
Unix 命令,常用到的
查看>>
DLL中建立进程共享数据段需要注意的语法问题
查看>>
服务器端技术----Http请求的处理过程
查看>>
C语言-预处理指令2-条件编译
查看>>
C语言-预处理指令3-文件包含
查看>>
C语言-变量类型
查看>>
C语言-static和extern关键字1-对函数的作用
查看>>
C 语言-static和extern关键字2-对变量的作用
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
还不会正则表达式?看这篇!
查看>>
100道+ JavaScript 面试题,助你查漏补缺
查看>>
JavaScript深入理解之闭包
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>