在JS中flat() 和 flatMap()使用讲解

embedded/2024/10/21 7:46:08/

flat()flatMap() 是 JavaScript 中处理数组的两个方法,用于处理嵌套数组,但它们有不同的用途和效果。以下是它们的详细区别:

1. Array.prototype.flat()

  • 功能:将嵌套的数组“拉平”成一维数组。

  • 语法:

    array.flat([depth])
    
  • depth:可选参数,表示要拉平的深度。默认值是 1。

  • 示例:

    const arr = [1, [2, [3, [4]]]];
    console.log(arr.flat());          // [1, 2, [3, [4]]]
    console.log(arr.flat(2));         // [1, 2, 3, [4]]
    console.log(arr.flat(3));         // [1, 2, 3, 4]
    
  • 说明: flat() 只负责将数组拉平,并不会对数组中的元素进行处理。它简单地将嵌套层次减少到指定的深度。

2. Array.prototype.flatMap()

  • 功能:对数组中的每个元素应用一个函数,然后将结果“拉平”成一维数组。

  • 语法

    array.flatMap(callback[, thisArg])
    
  • callback:一个函数,用于处理数组中的每个元素,并返回一个数组。

  • thisArg:可选参数,指定 callback 中 this 的值。

  • 示例:

    const arr = [1, 2, 3, 4];
    const result = arr.flatMap(x => [x, x * 2]);
    console.log(result);  // [1, 2, 2, 4, 3, 6, 4, 8]
    
  • 说明: flatMap() 先对每个元素执行 callback 函数,然后将所有返回的数组“拉平”到一维。它常用于需要对数组元素进行映射,并将结果扁平化的场景。

对比总结

  • flat():将嵌套的数组按指定深度拉平,主要用于调整数组的层次结构。
  • flatMap():对每个元素应用一个映射函数,返回的数组会被“拉平”,常用于将嵌套的结果合并成一个平面数组。

实际使用场景

  • flat():当你有多层嵌套数组,并且只想简单地减少嵌套深度时使用。
  • flatMap():当你需要对数组中的元素进行映射操作,并将结果合并成一个平面数组时使用。

http://www.ppmy.cn/embedded/108846.html

相关文章

[NISACTF 2022]easyssrf

打开题目所在的环境,发现是快照获取的工具,这里我尝试输入的是百度的网址,发现他会返回这个网站的一些基本信息 : 这个题目提示了ssrf,我们这里用file协议开始测试: file:///etc/password 发现返回的结果是…

自动驾驶ADAS算法--使用MATLBA和UE4生成测试视频

原文参考:金书世界 环境搭建参考:用MATLAB2020b和虚拟引擎(Unreal Engine)联合仿真输出AVM全景测试视频----Matlab环境搭建 matlab参考: https://ww2.mathworks.cn/help/driving/ug/simulate-a-simple-driving-sce…

Android之SharedPreferences(SP)

目录 概念使用1.获取 SharedPreferences 实例1.1 通过 Context 获取默认的 SharedPreferences 文件1.2 通过 Activity 获取默认的 SharedPreferences 文件1.3 通过 PreferenceManager 获取默认的 SharedPreferences 文件 2.存储数据3.读取数据4.删除数据5.监听数据变化 使用场景…

来聊聊C++中的vector

一.vector简介 vector是什么 C 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。 与 C 数组相比,vector 具有更多的…

吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.09.03 更新】

以前我也是通过官网使用,但是经常被封号,就非常不方便,后来有朋友推荐国内工具,用了一阵之后,发现:稳定方便,用着也挺好的。 最新的 GPT-4o、4o mini,可搭配使用~ 1、 最新模型科普&…

清洁眼镜片

经常眼镜弄脏了 怎么弄都干净不了 根本无法佩戴 影响出门时间 有时在外很尴尬 其实清洁很简单 从水龙水冲洗镜片(可附上洗手液) 然后用纸巾局部点触抹干偶尔泛起小水滴 就好

MySQL数据库(初始上)

什么是MySQL MySQL是一个客户端——服务器结构的程序,MySQL的服务器是真正的本体,负责保存和管理数据,数据存储在硬盘上。数据库指的是逻辑上数据的集合,一个MySQL服务器上可以有很多表,把有关连的连到一起就构成了一…

马来西亚参访团走进数字人企业世优科技,共鉴元宇宙数字创新成果

在数字化转型的浪潮中,全球企业正加速拥抱创新技术,以期在激烈的市场竞争中占据先机。 9月4日,马来西亚CCG集团、马来西亚TOPWORK公司、马来西亚一带一路总商会的嘉宾们齐聚一堂,共同参访了总部位于中国北京的世优科技公司&#…