ES10 还只是一个草案。但是除了 Object.fromEntries 之外,Chrome 的大多数功能都已经实现了,为什么不早点开始探索呢?当所有浏览器都开始支持它时,你将走在前面,这只是时间问题。
虽然有关Array有两个新的特性,不过今天不讲那么多,只来谈谈 flat。
- Array.flat()
- Array.flatMap()
Array.flat()
这是一个扁平化多维数组的新特性。
1 | let arr = [1, [2, [3]]]; |
语法:Array.flat(n),n 表示维度,当 n 值为 Infinity 时维度为无限大。
很棒的 api,不过作为 es10 的新特性,拜托!都9012年了,怎么会有人关注兼容性问题。俗话说得好,搞技术的怎么能知其然,而不知其所以然呢?盘它!(谁还记得是哪位老人家说的)
Es5写法
开始篇
1 | let arr = [1,[2,[3]]]; |
使用 toString 方法将数组转化为字符串,在使用 split 对字符串进行裁剪,获得一个拉平之后的数组。
但这种方法存在缺陷,数组内的数据类型改变了。一般情况下肯定是希望将数组拉平的同时,其中的数据类型不变。
进阶篇
1 | let arr = [1,[2,[3]]]; |
这样,使用递归来拉平数组,获得的新数组内数据类型将不发生改变。
好了 es5 写法就搞这么多,再来看看 es6 写法。
Es6写法
1 | let arr = [1,[2,[3]]]; |
本质是利用递归与数组合并方法 concat 实现扁平化。