数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维数组。该方法返回一个新数组,对原数据没有影响。

[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]

上面代码中,原数组的成员里面有一个数组,flat()方法将子数组的成员取出来,添加在原来的位置。

flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

上面代码中,flat()的参数为2,表示要拉平两层的嵌套数组。

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]

如果原数组有空位,flat()方法会跳过空位。

[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]

flatMap()方法对原数组的每个成员执行一个函数,相当于执行Array.prototype.map(),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]

flatMap()只能展开一层数组。

es6之数组的flat(),flatMap()相关推荐

  1. Es6类数组length属性和扩展方法,find(),findIndex(),fill(),copyWithin(),entries()...用法

    类数组对象 一个类数组对象必须含有 length 属性,且元素属性名必须是数值或者可转换为数值的字符. {let arr = Array.from({0: "1",1: " ...

  2. 数组方法 + ES6中数组方法 + 数组的空位

    目录 1.静态方法 1.Array.isArray() Array.isArray方法返回一个布尔值,表示参数是否为数组.它可以弥补typeof运算符的不足. 2.Array.from() 用于将两类 ...

  3. es6删除数组某一项_精学手撕系列——数组扁平化

    参考文章:面试官连环追问:数组拍平(扁平化) flat 方法实现 编者荐语: 在前端面试中,手写flat是非常基础的面试题,通常出现在笔试或者第一轮面试中,主要考察面试者基本的手写代码能力和JavaS ...

  4. 【ES6】数组的拓展

    [ES6]数组的拓展 一.Array.from()方法 二.Array.of()方法 三.数组的copyWithin()方法 四.数组的find()和findIndex()方法 五.数组的fill() ...

  5. 第八节:ES6为数组做了哪些扩展?

    广东的小伙伴大家还好吗,天气都热成狗了! 今天就不发预告了,直接推送图文. 前面讲了字符串和数值的扩展,今天要讲的是:数组的扩展.不知道大家能否跟得上这个节奏,你们在阅读中对讲解有存在疑惑,记得留言提 ...

  6. es6中数组的解构_ES6中的数组解构简介

    es6中数组的解构 by Kevwe Ochuko 通过Kevwe Ochuko Destructuring in JavaScript is a simplified method of extra ...

  7. es6删除数组某项_es6删除数组元素或者对象元素的方法介绍(代码)

    本篇文章给大家带来的内容是关于es6删除数组元素或者对象元素的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一,删除数组元素let arr = [ {name:'黎 ...

  8. es6 filter() 数组过滤方法总结

    Array.every(x=>x)是每一个都要满足 Array.some(x=>x)是有一个满足. Array.find(findIndex),返回符合条件的第一个值. Array.fil ...

  9. js es6使用数组的every方法遇到的问题

    最近在看js数据结构和算法的书,并且把书里面的案例敲了一遍,在集合这一章里面,在封装集合子集的时候是这样封装的, isSubsetOf(otherSet) { if (this.size() > ...

最新文章

  1. sftp连不上服务器 vscode_VSCODE 【SFTP】 Code:3221225477 / 扩展宿主意外终止 解决方法...
  2. SAP UI5关于navigation API的boolean参数
  3. 09-R中文文本分析方便工具包chinese.misc简介
  4. Java服务器多站点,java客户端web服务器连接到多个web服务器
  5. 算法-求二进制数中1的个数
  6. 探讨VSTS联合MS PROJECT协同开发之三:比较篇
  7. MATLAB矩阵计算大全
  8. 查看Mac上已连接WiFi的密码?
  9. cv2.resize()
  10. 智能合约节省GAS的小技巧:避免使用>=和<=
  11. 如何查SCI期刊的影响因子与排名
  12. 微新余微信号ivxinyu✅ 冒死偷拍,对所有人都有益,求扩散!!!
  13. 无线充电组别国一队:浙江工业大学
  14. 浅谈RESTful风格
  15. AcWing 715. 余数
  16. 国内常用 DNS 汇总
  17. 机器翻译是计算机语言学的一个分支,语言学知识在机器翻译发展领域的应用
  18. 爬取胸罩数据发现惊天秘密,D罩杯尽然。。。
  19. 修改手游登录服务器,手游[有侠气]一键启动服务端+客户端+GM管理运营后台+VIP修改+启动教程等...
  20. 准备搬家,送所有书籍!

热门文章

  1. Occlusion-Aware Cost Constructor for Light Field Depth Estimation论文阅读
  2. linux 脚本 ll命令,linux中ll命令的详细解释
  3. 【笔记】行测——常识判断之文史常识总结与归纳(二)
  4. JAVA —— Git
  5. 因游戏找代练影响仕途?韩国女议员到底冤不冤?
  6. python embed 版是什么_Extending(扩展)Embeding(嵌入)python
  7. 多家银行封杀信用卡支付宝交易 再次惹关注
  8. win10 安装MariaDB
  9. java IO流之BufferedReader和BufferedWriter
  10. oracle decode sqlserver,sqlserver 的类似oracle的decode函数