当前位置: 首页 > news >正文

TypeScript:map和set函数

1.map() 函数

  • 定义与用途map() 是数组(Array)的一个高阶方法,用于创建一个新数组,新数组的元素是原数组每个元素调用回调函数后的返回值。它不会改变原数组,而是返回一个新数组。在TypeScript中,由于类型系统的引入,可以显式指定回调函数的参数和返回值类型,确保类型安全。

  • 语法
array.map(callback(currentValue, index, array), thisArg?);
  • callback:一个函数,接受三个参数:

    • currentValue:当前处理的数组元素。

    • index(可选):当前元素的索引。

    • array(可选):原数组本身。

  • thisArg(可选):执行 callback 时使用的 this 值。

  • 类型安全示例:在TS中,可以使用泛型或类型注解来约束类型。例如:

const numbers: number[] = [1, 2, 3];
// 使用箭头函数定义回调,指定输入和输出类型为number
const doubled: number[] = numbers.map((num: number): number => num * 2);
console.log(doubled); // 输出: [2, 4, 6]
  • 特点总结

    • 纯函数:不修改原数组,适合函数式编程。

    • 类型推断:TS能自动推断类型,但显式注解可提高代码可读性和安全性。

    • 效率:遍历整个数组,时间复杂度 O(n)。

2.set 函数(指 Set 数据结构):   

  • 定义与用途Set 是ES6引入的内置对象,在TypeScript中作为泛型类使用,用于存储唯一值(值不重复)的集合。它不是函数,而是一个构造函数(类),其实例提供方法来操作集合。TS通过泛型增强类型安全,如 Set<string> 表示只存储字符串类型。

  • 核心方法与属性

    • 构造函数new Set<T>(iterable?),其中 T 是泛型参数,指定元素类型。

    • 主要方法

      • add(value: T):添加值到集合(如果值已存在,则忽略)。

      • has(value: T):检查值是否存在于集合中,返回布尔值。

      • delete(value: T):删除指定值。

      • clear():清空整个集合。

    • 属性

      • size:获取集合中元素的数量。

  • 类型安全示例

// 创建一个字符串类型的Set
const uniqueNames: Set<string> = new Set();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // 添加无效,因为"Alice"已存在
console.log(uniqueNames.size); // 输出: 2
console.log(uniqueNames.has("Bob")); // 输出: true
uniqueNames.delete("Bob");
  • 特点总结

    • 唯一性:自动去除重复值,基于值比较(使用SameValueZero算法)。

    • 类型约束:TS泛型确保集合元素类型一致。

    • 性能:查找、添加和删除操作的平均时间复杂度为 O(1)。

总结

  • map():主要用于数组的转换操作,通过回调函数生成新数组。优势在于类型安全和不可变性,适合数据处理场景。

  • Set:是一种数据结构,用于存储唯一值的集合。优势在于高效的元素管理和类型约束,适合去重或成员检查任务。

  • 关键区别map() 是数组方法,用于元素映射;Set 是数据结构对象,用于值存储。

  • TS中的最佳实践:利用TypeScript的类型系统(如泛型)来定义回调函数或集合元素类型,避免运行时错误,提高代码健壮性。

http://www.dtcms.com/a/357800.html

相关文章:

  • 2025 DDC系统选型白皮书:构建高效低碳智慧楼宇的核心指南
  • 【python开发123】三维地球应用开发方案
  • python 解码 视频解码
  • 打工人日报#20250829
  • 人工智能-python-深度学习-批量标准化与模型保存加载详解
  • OpenTenBase 技术解读与实战体验:从架构到行业落地
  • 2024年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • c++标准模板库
  • 轨道交通场景下设备状态监测与智能润滑预测性维护探索
  • 动态环境下的人员感知具身导航!HA-VLN:具备动态多人互动的视觉语言导航基准与排行榜
  • Free Subtitles-免费AI在线字幕生成工具,支持111种语言
  • 【ChatMemory聊天记忆】
  • STM32F4系列单片机如何修改主频
  • 从世界人形机器人大会看人形机器人如何实现复杂人类动作的精准复现?
  • 【论文简读】MuGS
  • 【拍摄学习记录】05-对焦、虚化、景深
  • 2025年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Golang 面试题「中级」
  • 四旋翼飞行器动力学建模与简单PID控制
  • 锂电池充电芯片 XSP30支持PD/QC等多种快充协议支持最大充电电流2A
  • 嵌入式Linux驱动开发:i.MX6ULL平台设备驱动
  • 第22章笔记|把“可传参脚本”打磨成“高级好用的工具”
  • 博客系统测试实战:功能和性能的全面解析
  • selenium自动下载更新浏览器对应的webdriver
  • 关于shell命令的扩展
  • log4jshell CVE-2021-44228 复现
  • R1 快开门式压力容器操作证考试大纲解读:重点模块与考核标准
  • Linux Shell 编程
  • 淘宝商品评论接口技术实现:从评论获取到情感分析全流程方案
  • SQL知识