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

2024-01-16 05:48

本文主要是介绍【JavaScript 教程】第六章 数组16—flat() :递归地将数组展平到指定的深度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这篇关于【JavaScript 教程】第六章 数组16—flat() :递归地将数组展平到指定的深度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/611507

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去