数据方法 flat和flatMap

2021-01-02  本文已影响0人  每日log

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个方法

上一篇下一篇

猜你喜欢

热点阅读