嵌套数组的扁平化处理
JavaScript 实现数组的扁平化处理
什么是数组的扁平化处理
数组的扁平化处理指将一个多维数组变成一维数组
1 | [1, [2, 3, [4, 5]]] ---> [ 1, 2, 3, 4, 5 ] |
Mode One (方式一) ES6 的 flat()
ES6 提供了数组方法 flat(depth) 对数组进行扁平化处理。
参数:
depth被扁平化的数组的层级,默认值为1可以为Infinity,表示完全扁平化
返回值:- 一个扁平化处理后的新数组
1 | const arr = [1, [2, 3, [4, 5]]] |
Mode Two (方式二) ES6 的 拓展运算符
...[] 能用于拓展数组,将一个数组转为用逗号分隔的参数序列。
思想: 通过arr.some()判断数组是否还嵌套数组,嵌套就对嵌套在最外层的数组进行拓展运算。
1 | const arr = [1, [2, 3, [4, 5]]] |
Mode Three (方式三) Array.reduce() 进行拓展
Array.reduce(pre, next) 能够对数组进行累计处理
参数:
pre方法的前一个返回结果next当前数组元素
1 | const arr = [1, [2, 3, [4, 5]]] |
Mode Four (方式四) 递归实现
思想: 对每一层的每一个数组进行处理,使其变成一维数组。
1 | const arr = [1, [2, 3, [4, 5]]] |
Mode five (方式五) toStirng() 和 split()
toString() 能够将数组转为以 , 分割的字符串.
splt(flag) 能够将字符串以 flag 进行分割
参数:
flag指定的字符串分割字符
思想: 先通过 toString() 方法将数组转为字符串,再通过 split() 方法将字符串转为数组,再通过 map() 函数改变转变后的数据类型
1 | const arr = [1, [2, 3, [4, 5]]] |
注意:这个方法会改变原数据的数据类型,谨慎使用
Mode Six (方式六) join() 和 split()
join(flag) 方法能够以 flag 连接数组元素
参数:
flag指定的字符串连接字符
1 | const arr = [1, [2, 3, [4, 5]]] |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hao的博客空间!





