TypeScript中Map與Set的區(qū)別小結(jié)
在TypeScript中,Map和Set都是ES6引入的集合類型,它們有各自不同的用途和特性:
Map(映射)
Map是鍵值對(duì)的集合,其中鍵可以是任意類型(對(duì)象、函數(shù)、基本類型等)。
主要特性:
// 創(chuàng)建Map
const map = new Map<string, number>();
// 添加鍵值對(duì)
map.set('name', 'Alice');
map.set('age', 25);
map.set(1, 'one'); // 鍵可以是數(shù)字
// 獲取值
console.log(map.get('name')); // 'Alice'
// 檢查鍵是否存在
console.log(map.has('age')); // true
// 刪除鍵值對(duì)
map.delete('age');
// 獲取大小
console.log(map.size); // 2Map的優(yōu)勢(shì):
- 鍵可以是任意類型
- 保持插入順序
- 有size屬性
- 性能在頻繁增刪時(shí)更好
Set(集合)
Set是值的集合,每個(gè)值在Set中只能出現(xiàn)一次。
主要特性:
// 創(chuàng)建Set const set = new Set<number>(); // 添加值 set.add(1); set.add(2); set.add(2); // 重復(fù)值會(huì)被忽略 set.add(3); // 檢查值是否存在 console.log(set.has(2)); // true // 刪除值 set.delete(1); // 獲取大小 console.log(set.size); // 2 // 遍歷 set.forEach(value => console.log(value));
Set的優(yōu)勢(shì):
- 自動(dòng)去重
- 快速判斷值是否存在
- 保持插入順序
主要區(qū)別對(duì)比
| 特性 | Map | Set |
|---|---|---|
| 存儲(chǔ)內(nèi)容 | 鍵值對(duì) | 唯一值 |
| 重復(fù)處理 | 鍵唯一,值可重復(fù) | 值唯一 |
| 主要用途 | 需要鍵值映射的場(chǎng)景 | 需要唯一值的集合 |
| 查找性能 | 通過鍵快速查找 | 通過值快速查找 |
| 典型方法 | set(), get(), has() | add(), has() |
使用場(chǎng)景示例
Map使用場(chǎng)景:
// 用戶信息映射
const userMap = new Map<number, {name: string, email: string}>();
userMap.set(1, {name: 'Alice', email: 'alice@example.com'});
userMap.set(2, {name: 'Bob', email: 'bob@example.com'});
// 緩存數(shù)據(jù)
const cache = new Map<string, any>();Set使用場(chǎng)景:
// 去重
const numbers = [1, 2, 2, 3, 3, 4];
const uniqueNumbers = new Set(numbers); // [1, 2, 3, 4]
// 標(biāo)簽集合
const tags = new Set<string>();
tags.add('javascript');
tags.add('typescript');
tags.add('javascript'); // 不會(huì)被重復(fù)添加兩者都是TypeScript中非常有用的數(shù)據(jù)結(jié)構(gòu),根據(jù)具體需求選擇使用。
到此這篇關(guān)于TypeScript中Map與Set的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)TypeScript Map Set內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript Array數(shù)組對(duì)象的擴(kuò)展函數(shù)代碼
我們經(jīng)常給 String,Function,Array 的原型加上自定義的擴(kuò)展函數(shù),比如去除字符串空格,數(shù)組排序等2010-05-05
JavaScript用JQuery呼叫Server端方法示例代碼
這篇文章主要介紹了JavaScript用JQuery呼叫Server端方法,需要的朋友可以參考下2014-09-09
uni-app封裝axios進(jìn)行請(qǐng)求響應(yīng)攔截和token設(shè)置的操作指南
uni-app 是一個(gè)使用 Vue.js 開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到 iOS、Android、Web(響應(yīng)式)、以及各種小程序,Axios 是一個(gè)基于 Promise 的 HTTP 客戶端,本文我給大家介紹了uni-app封裝axios進(jìn)行請(qǐng)求響應(yīng)攔截和token設(shè)置的操作指南2025-01-01
JS根據(jù)Unix時(shí)間戳顯示發(fā)布時(shí)間是多久前【項(xiàng)目實(shí)測(cè)】
小編最近在實(shí)現(xiàn)這樣的需求類似微信朋友圈顯示發(fā)布時(shí)間為距離當(dāng)前時(shí)間多久之前這樣的功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2019-07-07
JavaScript實(shí)現(xiàn)簡(jiǎn)單獲取當(dāng)前網(wǎng)頁(yè)網(wǎng)址的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單獲取當(dāng)前網(wǎng)頁(yè)網(wǎng)址的方法,通過location對(duì)象的href方法來獲取網(wǎng)址,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-11-11
詳談for循環(huán)里面的break和continue語(yǔ)句
下面小編就為大家?guī)硪黄斦刦or循環(huán)里面的break和continue語(yǔ)句。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07

