
JavaScript数据处理之扁平化(数组)
发布日期:2021-05-07 01:26:36
浏览次数:21
分类:精选文章
本文共 2910 字,大约阅读时间需要 9 分钟。
数组扁平化方法与实现 数组扁平化方法与实现
数组的扁平化是将嵌套层数多的数组展平成一层数组
例如:
var arr = [1,2,3,[4,5,66],[4343,[22,3,4,5,[2,'ggg',['dd','aa',['qqq','www','eee'],'zzz']]],55353,[1,2,34,6,7],55];扁平化后的结果为:
var ans = [1, 2, 3, 4, 5, 66, 4343, 22, 3, 4, 5, 2, "ggg", "dd", "aa", "qqq", "www", "eee", "zzz", 55353, 1, 2, 34, 6, 7, 55];常见实现方法
递归遍历实现
function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } function flatten(arr) { var arr = arr || [], resArr = [], len = arr.length; for (var i = 0; i < len; i++) { if (isArray(arr[i])) { resArr = resArr.concat(flatten(arr[i])); } else { resArr.push(arr[i]); } } return resArr; }原型链实现
Array.prototype.flatten = function() { var resArr = []; this.forEach(function(item) { if (Object.prototype.toString.call(item) == '[object Array]') { return item.flatten().concat(resArr); } else { resArr.push(item); } }); return resArr; };使用reduce实现
function flatten1(arr) { var res = arr || []; return res.reduce(function(prev, next) { return Object.prototype.toString.call(next) == '[object Array]' ? prev.concat(flatten1(next)) : prev.concat(next); }, []); }ES6.0语法实现
const flatten2 = arr => arr.reduce((prev, next) => { return Object.prototype.toString.call(next) == '[object Array]' ? prev.concat(flatten2(next)) : prev.concat(next); }, []);
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月01日 14时08分11秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Burpsuite-02-设置JVM内存大小与解决页面显示文字乱码错误
2019-03-04
Python学习:字符串
2019-03-04
计算几何(旁切圆) - Ex-circles - UVA 11731
2019-03-04
DP - Tickets - HDU - 1260
2019-03-04
phpStudy for Linux (lnmp+lamp一键安装包)
2019-03-04
【安卓学习笔记】JAVA基础Lesson9-对象的转型
2019-03-04
本校暑假训练营11_Python数据分析入门7-网络1
2019-03-04
本校暑假训练营12_Python数据分析入门7-网络2
2019-03-04
数据库SQL实战3_获取所有非manager的员工emp_no
2019-03-04
JVM篇-结合源码分析垃圾收集器的类型
2019-03-04
RT -Thread Studio开发环境下使用W5500做TCP客户端
2019-03-04
Warning: The core is locked up的解决办法
2019-03-04
奔涌吧 后浪!!! 哔哩哔哩 何冰
2019-03-04
【JVM系列】JDK 内置工具
2019-03-04
JAVA 基础与进阶系列索引 -- JDK 源码学习系列 -- 并发
2019-03-04
网络编程系列索引 -- JAVA 网络编程系列
2019-03-04
【JDK源码分析系列】ArrayBlockingQueue源码分析
2019-03-04