1. flat
作用:会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回
返回值:一个包含将数组与子数组中所有元素的新数组
是否改变原有数组:否
语法:
var newArray = arr.flat([depth])
depth
可选
指定要提取嵌套数组的结构深度,默认值为1
。
例1:
var arr = [1, 2, [3, 4]];
console.log(arr.flat()) // [1, 2, 3, 4]
[1, 2, [3, 4]];
例2:
var arr = [1, 2, [3, 4, [5]]];
console.log(arr.flat(2)); // [1, 2, 3, 4, 5]
console.log(arr) // [1, 2, [3, 4, [5]]]
例3:
flat()
方法会移除数组中的空项:
var arr = [1, 2, ,4, 5];
console.log(arr.flat(2)); // [1, 2, 4, 5]
console.log(arr) // [1, 2, ,4, 5];
2. flatMap
作用:首先使用映射函数映射每个元素,然后将结果压缩成一个新数组
返回值:一个新的数组,其中每个元素都是回调函数的结果,并且结构深度 depth
值为1
是否改变原有数组:否
语法:
var new_array = arr.flatMap(
function callback(currentValue[, index[, array]]) {
// return element for new_array
}[, thisArg])
参数:
callback
:可以生成一个新数组中的元素的函数,可以传入三个参数:
currentValue
:当前正在数组中处理的元素
index
:可选。数组中正在处理的当前元素的索引。
array
:可选。被调用的 map 数组
thisArg
:可选。执行 callback 函数时 使用的this 值。
flatMap
方法与 map
方法和深度depth为1的 flat 几乎相同
map
:
var arr = [1, 2, 3];
var arg = arr.map(x => [x * 2]);
console.log(arg) // [[2], [4], [6]]
console.log(arr)// [1, 2, 3]
flatMap
:
var arg2 = arr.flatMap(x => [[x * 2]]);
console.log(arg) //[[2], [4], [6]]
console.log(arr)// [1, 2, 3]
更多请参考:你一定会用到的数组的31个方法
网友评论