array 新特性flat()和flatMap()
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()相关推荐
- ES5总结1:数组Array新特性最全最精简的详解
2个位置方法:indexOf lastIndexOf 5个迭代方法:forEach every some filter map 2个高阶函数:reduce reduce ...
- ECMAScript 2019(ES10)新特性简介
简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...
- ES10新特性你了解多少
ES10的新特性主要有: 对象方法扩展 字符串扩展方法 数组的扩展方法 Symbol 扩展 try...catch 改变 toString() 改变 一.对象方法扩展 const result = O ...
- ES6~ES12——Array Includes、Object values、Object entries、Object fromEntries、flat、flatMap、空值合并运算符、可选链等
一.ES7 - Array Includes 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1. 在ES7中,我们可以通过include ...
- java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合
java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...
- [转]ES7、ES8、ES9、ES10新特性大盘点
ES7.ES8.ES9.ES10新特性大盘点 本文转自:https://mp.weixin.qq.com/s/8bov6788ivV0sHzmwrn5lw 以下文章来源于前端工匠 ,作者浪里行舟君 前 ...
- [转]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默认参数 ...
- JavaScript高级之ECMASript 7、8 、9 、10 新特性
第3章 ECMASript 7 新特性 3.1. Array.prototype.includes Includes 方法用来检测数组中是否包含某个元素,返回布尔类型值 3.2. 指数操作符 在ES7 ...
- JavaScript ES2021 新特性解析
JavaScript ES2021 新特性解析 新特性列表 String.prototype.replaceAll Promise.any 逻辑运算符和赋值表达式 数值分隔符 Intl.ListFor ...
最新文章
- 用RPython在云端运行可扩展数据科学
- linux apt qt下载,Linux如何安装 apt-get 软件管理工具
- 求一段内存中的字节型数据的和
- ServletContext接口
- 创建windows服务,定时监控网站应用程序池
- oracle有人用过fra吗,FRA(闪回恢复区)
- gg修改器修改数值没有用怎么办_风灵月影是谁?风灵月影修改器大全
- c语言使用的编程环境是,啊哈C语言编程-第3课-C语言编程环境
- 黑苹果安装教程---联想G480安装懒人版10.9.5
- 【中医学】9 方剂-4
- nyoj112指数运算
- 基于qt linux的视频监控,基于Qt和OpenCV的无线视频监控系统
- CLIP:多模态领域革命者
- R语言绘图--高级图形之Circos
- 给你一碗孟婆汤,你会选择遗忘什么?
- python 微信授权 昵称乱码解决
- 信用卡号码的解析(转)
- P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。
- 22-04-23 西安 javaSE(14)文件流、缓冲流、转换流、对象流、标准流、关闭IO资源的封装类IOUtils(纳命来)
- mallat算法分析及c语言实现,图像的Mallat算法分解(Matlab代码)
热门文章
- 多重背包问题:O(VN)
- 解决consul出现I/O error on GET request for “http://XXX“: XXX错误
- C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统日志查看功能...
- 怎么进入MySQL命令行
- IDENTITY V(wlacm竞赛题)
- 为什么在2022年数据可视化的性能这么重要?
- List 集合去重方式与 java8新特性stream去重
- Nginx重定向与反向代理
- Android安装pem文件(华为手机)
- 语句覆盖、判定覆盖、条件覆盖 - 白盒笔试题解析