JS数组扁平化(flat)方法总结详解


Posted in Javascript onJune 24, 2019

需求:多维数组=>一维数组

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

第0种处理:直接的调用

arr_flat = arr.flat(Infinity);

第一种处理

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

第二种处理

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

第三种处理:递归处理

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);
}
}
}

第四种处理:用 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))

第五种处理:扩展运算符

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

这是一个比较实用而且很容易被问到的问题,欢迎大家交流补充。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
权威JavaScript 中的内存泄露模式
Aug 13 Javascript
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
本地对象Array的原型扩展实现代码
Dec 04 Javascript
js实时监听文本框状态的方法
Apr 26 Javascript
jQuery操作cookie方法实例教程
Nov 25 Javascript
基于JavaScript实现回到页面顶部动画代码
May 24 Javascript
简单实现jQuery轮播效果
Aug 18 jQuery
vue使用中的内存泄漏【推荐】
Jul 10 Javascript
Vue中使用vux配置代码详解
Sep 16 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 Javascript
vue数据更新UI不刷新显示的解决办法
Aug 06 Javascript
关于Javascript闭包与应用的详解
Apr 22 Javascript
深入了解query和params的使用区别
Jun 24 #Javascript
如何使用JavaScript实现栈与队列
Jun 24 #Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 #Javascript
一次让你了解全部JavaScript的作用域
Jun 24 #Javascript
通过循环优化 JavaScript 程序
Jun 24 #Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
Jun 24 #Javascript
node中实现删除目录的几种方法
Jun 24 #Javascript
You might like
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
浅谈json_encode用法
2015/03/05 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
Python判断文本中消息重复次数的方法
2016/04/27 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
Python实现12306火车票抢票系统
2019/07/04 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
几道数据库的面试题或笔试题
2014/05/31 面试题
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
学生党员思想汇报范文
2014/01/09 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
学校三节实施方案
2014/06/09 职场文书
物资采购方案
2014/06/12 职场文书
动物科学专业求职信
2014/07/27 职场文书
行政前台岗位职责
2015/04/16 职场文书
毕业论文致谢范文
2015/05/14 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android