ES6数组提供了许多实用的方法,其中两个方法 flat() 和 flatMap() 可以非常方便地处理多层嵌套数组。
flat()方法
flat()
方法会按照指定的层数将嵌套数组变成一维数组。具体用法如下:
let arr = [1, 2, [3, 4]];
let flatArr = arr.flat(); // [1, 2, 3, 4]
上面代码中,数组 arr 中包含一个嵌套数组 [3,4],使用 flat() 方法将其变成了一个一维数组。
默认情况下,flat()
方法只会将嵌套数组变成一维数组,可以通过传入一个数字表示要展开的层数,如:
let arr2 = [1, 2, [3, [4, 5]]];
let flatArr2 = arr2.flat(); // [1, 2, 3, [4, 5]]
let flatArr3 = arr2.flat(2); // [1, 2, 3, 4, 5]
当传入的参数大于数组的嵌套深度时,flat()
方法会将嵌套数组全部展开成一维数组。
同时,flat()
方法还可以移除数组中的空项,如:
let arr3 = [1, 2, , 3, 4, [], [5]];
let flatArr4 = arr3.flat(); // [1, 2, 3, 4, [5]]
上面代码中,数组 arr3 中有一个空项和一个空数组,使用 flat()
方法可以将它们移除并同时展开嵌套数组。
flatMap() 方法
flatMap()
方法可以同时对数组进行map操作和展开操作。具体用法如下:
let arr4 = [1, 2, 3];
let flatMapArr = arr4.flatMap(item => [item, item * 2]); // [1, 2, 2, 4, 3, 6]
上面代码中,flatMap()
方法的回调函数中返回了一个数组,flatMap()
方法对每个数组元素都执行回调函数,并将返回的数组展开成一维数组。
同时,flatMap()
方法还能够支持传入一个可选参数用于指定 this
关键字的指向,示例如下:
let arr5 = [1, 2, 3];
let flatMapArr2 = arr5.flatMap(function(item) {
return [this.prefix + item, this.prefix + item * 2];
}, { prefix: 'A' }); // ['A1', 'A2', 'A2', 'A4', 'A3', 'A6']
上面代码中,flatMap()
方法第二个参数传入了 { prefix: 'A' }
,作为回调函数中 this
关键字的指向。可以看到,返回的数组元素中加入了前缀 A
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:es6数组的flat(),flatMap()函数用法实例分析 - Python技术站