flat()flatMap()本质上就是是归纳(reduce) 与 合并(concat)的操作。

flat()

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

//flat()方法最基本的作用就是数组降维var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]//使用 Infinity 作为深度,展开任意深度的嵌套数组
arr3.flat(Infinity);
// [1, 2, 3, 4, 5, 6]

flatMap() 

flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 和 深度值1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。 这里我们拿map方法与flatMap方法做一个比较。

var arr1 = [1, 2, 3, 4];arr1.map(x => [x * 2]);
// [[2], [4], [6], [8]]arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]// 只会将 flatMap 中的函数返回的数组 “压平” 一层
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]

参考:链接:https://juejin.im/post/5ca2e1935188254416288eb2

array 新特性flat()和flatMap()相关推荐

  1. ES5总结1:数组Array新特性最全最精简的详解

    2个位置方法:indexOf  lastIndexOf 5个迭代方法:forEach       every  some       filter  map 2个高阶函数:reduce  reduce ...

  2. ECMAScript 2019(ES10)新特性简介

    简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...

  3. ES10新特性你了解多少

    ES10的新特性主要有: 对象方法扩展 字符串扩展方法 数组的扩展方法 Symbol 扩展 try...catch 改变 toString() 改变 一.对象方法扩展 const result = O ...

  4. ES6~ES12——Array Includes、Object values、Object entries、Object fromEntries、flat、flatMap、空值合并运算符、可选链等

    一.ES7 - Array Includes 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1. 在ES7中,我们可以通过include ...

  5. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  6. [转]ES7、ES8、ES9、ES10新特性大盘点

    ES7.ES8.ES9.ES10新特性大盘点 本文转自:https://mp.weixin.qq.com/s/8bov6788ivV0sHzmwrn5lw 以下文章来源于前端工匠 ,作者浪里行舟君 前 ...

  7. [转]ES6、ES7、ES8、ES9、ES10新特性一览 (个人整理,学习笔记)

    目录 1.ES6新特性(2015) 1.1模块化(Module) 1.1.1导出(export) 1.1.2导入(import) 1.2箭头(Arrow)函数 1.2.1箭头函数的结构 1.3默认参数 ...

  8. JavaScript高级之ECMASript 7、8 、9 、10 新特性

    第3章 ECMASript 7 新特性 3.1. Array.prototype.includes Includes 方法用来检测数组中是否包含某个元素,返回布尔类型值 3.2. 指数操作符 在ES7 ...

  9. JavaScript ES2021 新特性解析

    JavaScript ES2021 新特性解析 新特性列表 String.prototype.replaceAll Promise.any 逻辑运算符和赋值表达式 数值分隔符 Intl.ListFor ...

最新文章

  1. 用RPython在云端运行可扩展数据科学
  2. linux apt qt下载,Linux如何安装 apt-get 软件管理工具
  3. 求一段内存中的字节型数据的和
  4. ServletContext接口
  5. 创建windows服务,定时监控网站应用程序池
  6. oracle有人用过fra吗,FRA(闪回恢复区)
  7. gg修改器修改数值没有用怎么办_风灵月影是谁?风灵月影修改器大全
  8. c语言使用的编程环境是,啊哈C语言编程-第3课-C语言编程环境
  9. 黑苹果安装教程---联想G480安装懒人版10.9.5
  10. 【中医学】9 方剂-4
  11. nyoj112指数运算
  12. 基于qt linux的视频监控,基于Qt和OpenCV的无线视频监控系统
  13. CLIP:多模态领域革命者
  14. R语言绘图--高级图形之Circos
  15. 给你一碗孟婆汤,你会选择遗忘什么?
  16. python 微信授权 昵称乱码解决
  17. 信用卡号码的解析(转)
  18. P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。
  19. 22-04-23 西安 javaSE(14)文件流、缓冲流、转换流、对象流、标准流、关闭IO资源的封装类IOUtils(纳命来)
  20. mallat算法分析及c语言实现,图像的Mallat算法分解(Matlab代码)

热门文章

  1. 多重背包问题:O(VN)
  2. 解决consul出现I/O error on GET request for “http://XXX“: XXX错误
  3. C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统日志查看功能...
  4. 怎么进入MySQL命令行
  5. IDENTITY V(wlacm竞赛题)
  6. 为什么在2022年数据可视化的性能这么重要?
  7. List 集合去重方式与 java8新特性stream去重
  8. Nginx重定向与反向代理
  9. Android安装pem文件(华为手机)
  10. 语句覆盖、判定覆盖、条件覆盖 - 白盒笔试题解析