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 相关文章推荐
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
Feb 03 Javascript
js文本框输入点回车触发确定兼容IE、FF等
Nov 19 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
浅谈Javascript中深复制
Dec 01 Javascript
百度地图自定义控件分享
Mar 04 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
Jul 08 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
微信小程序 wx.request(object) API详解及实例代码
Sep 30 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
实现vuex原理的示例
Oct 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
【python】matplotlib动态显示详解
2019/04/11 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
一套SQL笔试题
2016/08/14 面试题
简历自我评价模版
2014/01/31 职场文书
初中学校军训方案
2014/05/09 职场文书
开展读书活动总结
2014/06/30 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
大专毕业生求职信
2014/07/05 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
行政前台岗位职责
2015/04/16 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis