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 相关文章推荐
基于MooTools的很有创意的滚动条时钟动画
Nov 14 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
javascript中scrollTop详解
Apr 13 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
微信小程序 利用css实现遮罩效果实例详解
Jan 21 Javascript
angularjs+bootstrap菜单的使用示例代码
Mar 07 Javascript
实例教学如何写vue插件
Nov 30 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
Nov 30 Javascript
JavaScript中变量、指针和引用功能与操作示例
Aug 04 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 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
第十四节 命名空间 [14]
2006/10/09 PHP
模仿OSO的论坛(一)
2006/10/09 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
护理自荐信范文
2013/10/05 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
运动会演讲稿300字
2014/08/25 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
护士2015年终工作总结
2015/04/29 职场文书
工作态度检讨书范文
2015/05/06 职场文书
结婚主持人致辞
2015/07/28 职场文书
初一数学教学反思
2016/02/17 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
Python提取PDF指定内容并生成新文件
2021/06/09 Python
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
图神经网络GNN算法
2022/05/11 Python