ES6+ flat()
1. 前言
在开发中有时会遇到对多维数组进行拍平处理,数组的拍平就是将 一个 嵌套多层的数组进行降维操作,也就是对数值进行扁平化。然而在 ES5 是没有 方法 能处理这样的需求的,大部分都会借助 函数 库的方式来实现。
本节我们要学习的是 ES6 提供的 flat() 方法 ,对多维数组进行扁平化操作,而且可以对数组中的空项进行移除。
2. ES5 中的处理 方法
ES5 中没有类似的 方法 ,如果要达到目标结果需要自己写 函数 针对性处理。
function flat ( arr ) { if ( Object . prototype . toString . call ( arr ) != "[object Array]" ) { return false } ; let res = [ ] ; for ( var i = ; i < arr . length ; i ++ ) { if ( arr [ i ] instanceof Array ) { res = res . concat ( flat ( arr [ i ] ) ) } else { res . push ( arr [ i ] ) } } return res ; } ; var arr = [ , , [ , , , [ , , ] , ] , , [ , ] ] ; flat ( arr ) ; // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
上面的 代码 是实现了 一个 数组扁平化的 方法 ,在里面我们会定义 一个 空数组然后递归地去 调用 flat() 方法 处理原数组中的每一项,如果传入的是元素是数组,则要继续递归处理,最终会得到 一个 一维的数组。此 方法 只能把任意维度的数组转化为一维数组,不能转化为指定维度的数组,如果需要的话还得继续处理。
由此可见,扁平化数组是一件很麻烦的事,ES6 提供的 flat() 方法 完美地 解决 了扁平化数组所带来的问题,下面我们就来学习 flat() 方法 吧。
3. 方法 详情
3.1 语法使用
使用 flat() 方法 会接收 一个 参数,这个参数是 数值类型 ,是要处理扁平化数组的深度, 生成 后的新数组是独立存在的,不会对原数组产生影响。由此我们也可以使用它深拷贝 一个 数组,下文我们会用 一个 案例说明。
语法使用:
var newArray = arr . flat ( [ depth ] )
参数解释:
参数 描述 @H_209_ 301 @depth @H_209_ 301 @指定要 提取 嵌套数组结构的深度, 默 认值为 1
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did91783