热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【JavaScript教程】第六章数组16—flat():递归地将数组展平到指定的深度

英文|https:www.javascripttutorial.net译文|杨小爱在上节,我们学习如何使用JavaScriptArrayjoin()方法将数组的所有元

73e43f1075b3f60ff1ca74baeece1b02.png

英文 | https://www.Javascripttutorial.net/

译文 | 杨小爱

在上节,我们学习如何使用 Javascript Array join()方法将数组的所有元素连接成由分隔符分隔的字符串,错过的小伙伴可以点击文章《【Javascript 教程】第六章 数组15—join() :将所有元素连接成一个字符串》进行学习。

那么,在今天的教程中,我们将一起来学习如何使用 Javascript Array flat() 方法来展平数组。

Javascript Array flat() 方法介绍

ES2019 引入了 Array.prototype.flat() 方法,该方法创建一个新数组,其中子数组的所有元素递归连接到指定深度。

下面显示了 flat() 方法的语法:

let newArray = arrayObject.flat([depth])

depth 参数指定该方法使数组结构平坦的深度,它默认为 1。

下面的例子展示了如何扁平化一个数字数组:

const numbers = [1, 2, [3, 4, 5]];
const flatNumbers = numbers.flat();
console.log(flatNumbers);

输出:

[1, 2, 3, 4, 5]

在这个例子中,我们没有将深度参数传递给 flat() 方法,因此深度默认为 1。flat() 方法将嵌套数组 [3,4,5] 的所有元素连接到新数组的元素。

请注意, flat() 方法会创建一个新数组并且不会更改原始数组:

console.log(numbers);

输出:

[ 1, 2, [ 3, 4, 5 ] ]

以下示例将具有两级深度的数组展平:

const numbers = [1, 2, [3, 4, 5, [6, 7]]];
const flatNumbers = numbers.flat(2);
console.log(flatNumbers);

输出:

[1, 2, 3, 4, 5, 6, 7]

当我们不知道深度级别时,可以将 Infinity 传递给 flat() 方法,以递归方式将子数组的所有元素连接到新数组中:

const numbers = [1, 2, [3, 4, 5, [6, 7, [8, 9]]]];
const flatNumbers = numbers.flat(Infinity);
console.log(flatNumbers);

如果一个数组有空槽,我们可以使用 flat() 方法去除空洞,像这样:

const numbers = [1, 2, , 4, , 5];
const sequence = numbers.flat();
console.log(sequence);

输出:

[ 1, 2, 4, 5 ]

总结

使用 Array.prototype.flat() 方法将包含嵌套数组的数组展平。

使用 depth 参数指定嵌套数组应该展平的深度,深度默认为 1。

flat() 还删除了数组中带有空槽的孔。

今天的内容就到这里了。

如果您还想学习更多关于数组的内容,请点击下文链接进行学习。

【Javascript 教程】第六章 数组14—reduce() :将数组的元素减少为一个值

【Javascript 教程】第六章 数组13— forEach() :遍历数组元素

【Javascript 教程】第六章 数组12— map() :转换数组元素

【Javascript 教程】第六章 数组11— filter() :过滤数组中的元素

【Javascript 教程】第六章 数组10— sort() :对数组中的元素进行排序

【Javascript 教程】第六章 数组09— some() :检查数组中是否至少有一个元素通过了测试

【Javascript 教程】第六章 数组08— every() :检查数组中的每个元素是否都通过了测试

【Javascript 教程】第六章 数组07— index() :在数组中定位一个元素

【Javascript 教程】第六章 数组06— slice() :复制数组元素

【Javascript 教程】第六章 数组05— splice():删除、插入和替换

【Javascript 教程】第六章 数组04— Javascript 队列

【Javascript 教程】第六章 数组03— Stack :使用 Array 的push()和pop()方法实现堆栈数据结构

【Javascript 教程】第六章 数组02— Array Length:如何有效地使用数组的长度属性

【Javascript 教程】第六章 数组01— 介绍Javascript中的Array类型

学习更多技能

请点击下方公众号

91c203e851c9dc1742fcf16186ba48c0.gif

24e9ccc7decd0e23fb2a9ea93bdd1fd5.png

36f5793822a42d0d60cb8bd566b0f83f.png


推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了如何使用Maven高效管理多模块项目,涵盖项目结构设计、依赖管理和构建优化等方面。通过具体的实例和配置说明,帮助开发者更好地理解和应用Maven在复杂项目中的优势。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
author-avatar
流浪1种无奈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有