JavaScript(ES6)扁平化嵌套方法flatMap()和flat()

Array.prototype.flatMap()

flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。
由于我只用于扁平化,具体参数看文档。

代码如下:

//只有一层
const arr1 = [1, 2, 3, 4,[5],6,[7]];
const res=arr1.flatMap(x =>x)
console.log(res);
//打印:(7) [1, 2, 3, 4, 5, 6, 7]
//两层时
const arr2 = [1, 2, 3, 4,[[5]],6,[[[7]]]];
const res=arr2.flatMap(x =>x)
console.log(res);
打印:[1, 2, 3, 4, [5], 6, [7]]

注意:flatMap()只能扁平化一层数组,所有当只有一层的时候用,效率更高。

Array.prototype.flat()

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
参数:depth 可选–(指定要提取嵌套数组的结构深度,默认值为 1)
返回值:一个包含将数组与子数组中所有元素的新数组。
代码如下:

//depth可选,默认1
const arr1 = [1, 2, 3, 4,[5],6,[7]];
console.log(arr1.flat());
//打印:(7) [1, 2, 3, 4, 5, 6, 7]
//depth---2
const arr1 = [1, 2, 3, 4,[[5]],[6],[[7]],[[8]]];
console.log(arr1.flat(2));
//打印:(7) [1, 2, 3, 4, 5, 6, 7]
//depth---Infinity   不管有多少层嵌套,都要转成一维数组
const arr1 = [1, 2, 3, 4,[[5]],[6],[[7]],[[8]],[[[[[[9]]]]]] ];
console.log(arr1.flat(Infinity));
//打印:(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
注意:如果原数组有空位,flat()方法会跳过空位。
[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值