数组扁平化
总结的数组扁平化方法如下:
1,数组自带的方法flat
1 |
|
数组自带的扁平化方法,flat的参数代表的是需要展开几层,如果是Infinity的话,就是不过嵌套几层,
全部都展开。
如果写的是Infinity的话,就是不管你是多少维数组,都会直接转为一维数组
2,通过正则的方式来让数组扁平化
1 |
|
首先是使用JSON.stringify把arr转为字符串。
接着使用正则把字符串里面的 [ 和 ]去掉。
然后再拼接数组括号转为数组对象。
3,(简单粗暴)递归
1 |
|
首先,先写一个函数用来让数组扁平,函数先定义一个空数组,作为新数组返回。
接着,使用for循环遍历数组的每一项,
然后,使用Array.isArray()判断这一项是不是数组,
如果是数组,就递归调用这个函数,不是就讲它放到新数组中。
最后将数组返回。
4,(鲜为人知)array.reduce
定义和用法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
语法
1 |
|
reduce()方法是数组的通用方法,接受一个函数作为累加器,另外在接受一个数作为累加器中要用到的数据,可写可不写。
这个回调函数中每个参数的意义如下:
参数 | 描述 |
---|---|
total | 必需。初始值,或者计算结束后的返回值。 |
currentValue | 必须,当前元素。 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CJJJX's BLOG!