国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記錄--10個(gè)超級(jí)實(shí)用的Set、Map使用技巧

這篇具有很好參考價(jià)值的文章主要介紹了記錄--10個(gè)超級(jí)實(shí)用的Set、Map使用技巧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

這里給大家分享我在網(wǎng)上總結(jié)出來的一些知識(shí),希望對(duì)大家有所幫助

記錄--10個(gè)超級(jí)實(shí)用的Set、Map使用技巧

Set是一種類似于數(shù)組的數(shù)據(jù)結(jié)構(gòu),但是它的值是唯一的,即Set中的每個(gè)值只會(huì)出現(xiàn)一次。Set對(duì)象的實(shí)例可以用于存儲(chǔ)任何類型的唯一值,從而使它們非常適用于去重。

Map是一種鍵值對(duì)集合,其中每個(gè)鍵都是唯一的,可以是任何類型,而值則可以是任何類型。Map對(duì)象的實(shí)例可以用于存儲(chǔ)復(fù)雜的對(duì)象,并且可以根據(jù)鍵進(jìn)行快速的查找和訪問。

以下是Set和Map的一些常用方法:

Set:

  • new Set(): 創(chuàng)建一個(gè)新的Set對(duì)象
  • add(value): 向Set對(duì)象中添加一個(gè)新的值
  • delete(value): 從Set對(duì)象中刪除一個(gè)值
  • has(value): 檢查Set對(duì)象中是否存在指定的值
  • size: 獲取Set對(duì)象中的值的數(shù)量
  • clear(): 從Set對(duì)象中刪除所有值

Map:

  • new Map(): 創(chuàng)建一個(gè)新的Map對(duì)象
  • set(key, value): 向Map對(duì)象中添加一個(gè)鍵值對(duì)
  • get(key): 根據(jù)鍵獲取Map對(duì)象中的值
  • delete(key): 從Map對(duì)象中刪除一個(gè)鍵值對(duì)
  • has(key): 檢查Map對(duì)象中是否存在指定的鍵
  • size: 獲取Map對(duì)象中的鍵值對(duì)數(shù)量
  • clear(): 從Map對(duì)象中刪除所有鍵值對(duì)

Set和Map是非常有用的數(shù)據(jù)結(jié)構(gòu),它們可以提高程序的性能和可讀性,并且可以簡化代碼的編寫。

Set

去重

使用 Set 可以輕松地進(jìn)行數(shù)組去重操作,因?yàn)?Set 只能存儲(chǔ)唯一的值。

const arr = [1, 2, 3, 1, 2, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]

數(shù)組轉(zhuǎn)換

可以使用 Set 將數(shù)組轉(zhuǎn)換為不包含重復(fù)元素的 Set 對(duì)象,再使用 Array.from() 將其轉(zhuǎn)換回?cái)?shù)組。

const arr = [1, 2, 3, 1, 2, 4, 5];
const set = new Set(arr);
const uniqueArr = Array.from(set);
console.log(uniqueArr); // [1, 2, 3, 4, 5]

優(yōu)化數(shù)據(jù)查找

使用 Set 存儲(chǔ)數(shù)據(jù)時(shí),查找操作的時(shí)間復(fù)雜度為 O(1),比數(shù)組的 O(n) 要快得多,因此可以使用 Set 來優(yōu)化數(shù)據(jù)查找的效率。

const dataSet = new Set([1, 2, 3, 4, 5]);

if (dataSet.has(3)) {
  console.log('數(shù)據(jù)已經(jīng)存在');
} else {
  console.log('數(shù)據(jù)不存在');
}

并集、交集、差集

Set數(shù)據(jù)結(jié)構(gòu)可以用于計(jì)算兩個(gè)集合的并集、交集和差集。以下是一些使用Set進(jìn)行集合運(yùn)算的示例代碼:

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);

// 并集
const union = new Set([...setA, ...setB]);
console.log(union); // Set {1, 2, 3, 4}

// 交集
const intersection = new Set([...setA].filter(x => setB.has(x)));
console.log(intersection); // Set {2, 3}

// 差集
const difference = new Set([...setA].filter(x => !setB.has(x)));
console.log(difference); // Set {1}

模糊搜索

Set 還可以通過正則表達(dá)式實(shí)現(xiàn)模糊搜索??梢詫⑵ヅ浣Y(jié)果保存到 Set 中,然后使用 Array.from() 方法將 Set 轉(zhuǎn)換成數(shù)組。

const data = ['apple', 'banana', 'pear', 'orange'];

// 搜索以 "a" 開頭的水果
const result = Array.from(new Set(data.filter(item => /^a/i.test(item))));
console.log(result); // ["apple"]

使用 Set 替代數(shù)組實(shí)現(xiàn)隊(duì)列和棧

可以使用 Set 來模擬隊(duì)列和棧的數(shù)據(jù)結(jié)構(gòu)。

// 使用 Set 實(shí)現(xiàn)隊(duì)列
const queue = new Set();
queue.add(1);
queue.add(2);
queue.add(3);
queue.delete(queue.values().next().value); // 刪除第一個(gè)元素
console.log(queue); // Set(2) { 2, 3 }

// 使用 Set 實(shí)現(xiàn)棧
const stack = new Set();
stack.add(1);
stack.add(2);
stack.add(3);
stack.delete([...stack][stack.size - 1]); // 刪除最后一個(gè)元素
console.log(stack); // Set(2) { 1, 2 }

Map

將 Map 轉(zhuǎn)換為對(duì)象

const map = new Map().set('key1', 'value1').set('key2', 'value2');
const obj = Object.fromEntries(map);

將 Map 轉(zhuǎn)換為數(shù)組

const map = new Map().set('key1', 'value1').set('key2', 'value2');
const array = Array.from(map);

記錄數(shù)據(jù)的順序

如果你需要記錄添加元素的順序,那么可以使用Map來解決這個(gè)問題。當(dāng)你需要按照添加順序迭代元素時(shí),可以使用Map來保持元素的順序。

const map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
map.set('d', 4);

for (const [key, value] of map) {
  console.log(key, value);
}
// Output: a 1, b 2, c 3, d 4

統(tǒng)計(jì)數(shù)組中元素出現(xiàn)次數(shù)

可以使用 Map 統(tǒng)計(jì)數(shù)組中每個(gè)元素出現(xiàn)的次數(shù)。

const arr = [1, 2, 3, 1, 2, 4, 5];

const countMap = new Map();
arr.forEach(item => {
  countMap.set(item, (countMap.get(item) || 0) + 1);
});

console.log(countMap.get(1)); // 2
console.log(countMap.get(2)); // 2
console.log(countMap.get(3)); // 1

統(tǒng)計(jì)字符出現(xiàn)次數(shù)

使用Map數(shù)據(jù)結(jié)構(gòu)可以方便地統(tǒng)計(jì)字符串中每個(gè)字符出現(xiàn)的次數(shù)。

const str = 'hello world';
const charCountMap = new Map();
for (let char of str) {
  charCountMap.set(char, (charCountMap.get(char) || 0) + 1);
}
console.log(charCountMap); // Map { 'h' => 1, 'e' => 1, 'l' => 3, 'o' => 2, ' ' => 1, 'w' => 1, 'r' => 1, 'd' => 1 }

緩存計(jì)算結(jié)果

在處理復(fù)雜的計(jì)算時(shí),可能需要對(duì)中間結(jié)果進(jìn)行緩存以提高性能??梢允褂肕ap數(shù)據(jù)結(jié)構(gòu)緩存計(jì)算結(jié)果,以避免重復(fù)計(jì)算。

const cache = new Map();
function fibonacci(n) {
  if (n === 0 || n === 1) {
    return n;
  }
  if (cache.has(n)) {
    return cache.get(n);
  }
  const result = fibonacci(n - 1) + fibonacci(n - 2);
  cache.set(n, result);
  return result;
}
console.log(fibonacci(10)); // 55

使用 Map 進(jìn)行數(shù)據(jù)的分組

const students = [
  { name: "Tom", grade: "A" },
  { name: "Jerry", grade: "B" },
  { name: "Kate", grade: "A" },
  { name: "Mike", grade: "C" },
];

const gradeMap = new Map();
students.forEach((student) => {
  const grade = student.grade;
  if (!gradeMap.has(grade)) {
    gradeMap.set(grade, [student]);
  } else {
    gradeMap.get(grade).push(student);
  }
});

console.log(gradeMap.get("A")); // [{ name: "Tom", grade: "A" }, { name: "Kate", grade: "A" }]

使用 Map 過濾符合條件的對(duì)象

在實(shí)際開發(fā)中,我們常常需要在一個(gè)對(duì)象數(shù)組中查找符合某些條件的對(duì)象。此時(shí),我們可以結(jié)合使用 Map 和 filter 方法來實(shí)現(xiàn)。比如:

const users = [
  { name: 'Alice', age: 22 },
  { name: 'Bob', age: 18 },
  { name: 'Charlie', age: 25 }
];
const userMap = new Map(users.map(user => [user.name, user]));
const result = users.filter(user => userMap.has(user.name) && user.age > 20);
console.log(result); // [{ name: 'Alice', age: 22 }, { name: 'Charlie', age: 25 }]

首先,我們將對(duì)象數(shù)組轉(zhuǎn)換為 Map,以便快速查找。然后,我們使用 filter 方法來過濾符合條件的對(duì)象。

這里我們列舉了一些使用SetMap的實(shí)用技巧,它們可以大大簡化你的代碼,并使你更有效地處理數(shù)據(jù)。SetMap是JavaScript中非常有用的數(shù)據(jù)結(jié)構(gòu),值得我們?cè)诰帉懘a時(shí)好好利用。

本文轉(zhuǎn)載于:

https://juejin.cn/post/7225425984312328252

如果對(duì)您有所幫助,歡迎您點(diǎn)個(gè)關(guān)注,我會(huì)定時(shí)更新技術(shù)文檔,大家一起討論學(xué)習(xí),一起進(jìn)步。

?記錄--10個(gè)超級(jí)實(shí)用的Set、Map使用技巧文章來源地址http://www.zghlxwxcb.cn/news/detail-445864.html

到了這里,關(guān)于記錄--10個(gè)超級(jí)實(shí)用的Set、Map使用技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 爬蟲IP時(shí)效問題:優(yōu)化爬蟲IP使用效果實(shí)用技巧

    爬蟲IP時(shí)效問題:優(yōu)化爬蟲IP使用效果實(shí)用技巧

    作為一名專業(yè)的爬蟲程序員,我們經(jīng)常遇到的一個(gè)棘手問題那就是爬蟲IP的時(shí)效性。由于網(wǎng)站的反爬蟲機(jī)制不斷升級(jí),很多爬蟲IP的可用時(shí)間越來越短,導(dǎo)致我們的爬蟲任務(wù)頻繁中斷。今天,我將和大家分享一些優(yōu)化爬蟲IP使用效果的實(shí)用技巧,希望能幫助大家解決這個(gè)問題。

    2024年02月12日
    瀏覽(18)
  • AI論文技巧 │使用ChatGPT快速閱讀文獻(xiàn)--詳細(xì)流程+實(shí)用指令【建議收藏】

    AI論文技巧 │使用ChatGPT快速閱讀文獻(xiàn)--詳細(xì)流程+實(shí)用指令【建議收藏】

    論文的長征路還沒開始走,在最開始研究地圖的時(shí)候,已經(jīng)如看天書,那接下來的路很難攻克! 有什么好辦法呢? 咱們可以利用ChatGPT的強(qiáng)大能力。只要輸入文獻(xiàn),它就秒解文獻(xiàn)里的關(guān)鍵信息,讓我們迅速搞清楚 文獻(xiàn)的主題、目的、手法和結(jié)果 ,別再費(fèi)勁啃文了。 ◎ 找到關(guān)

    2024年02月21日
    瀏覽(29)
  • 在VMware 17虛擬機(jī)上安裝Windows 11操作系統(tǒng)(全程有圖超級(jí)詳細(xì))+VMware使用技巧

    在VMware 17虛擬機(jī)上安裝Windows 11操作系統(tǒng)(全程有圖超級(jí)詳細(xì))+VMware使用技巧

    目錄 我的安裝環(huán)境 一、安裝虛擬機(jī)前的準(zhǔn)備 1、打開Windows功能 2、安裝虛擬機(jī)軟件 3.下載Windows 11鏡像文件。 二、開始安裝虛擬機(jī) 1、新建虛擬機(jī) 2、選擇典型配置 3、選擇稍后安裝操作系統(tǒng) 4、選擇Windows 11 x64操 作系統(tǒng) 5、虛擬機(jī)命名和安裝路徑選擇 6、虛擬機(jī)加密 7、指定磁

    2024年02月08日
    瀏覽(99)
  • 你真的知道怎么使用vs嗎?把把手教你實(shí)用調(diào)試小技巧

    你真的知道怎么使用vs嗎?把把手教你實(shí)用調(diào)試小技巧

    談到bug,我們知道bug的中文意思是蟲子,飛蛾的意思。至于為什么bug一詞會(huì)用到計(jì)算機(jī)領(lǐng)域的話得追溯到第一臺(tái)計(jì)算機(jī)的誕生。 上面?zhèn)€你看到的就是世界上第一個(gè)bug的誕生。它的來源也是非常的有意思,當(dāng)時(shí)世界上的第一臺(tái)計(jì)算機(jī)出了故障不能正常的工作,于是工作人員就進(jìn)

    2024年02月05日
    瀏覽(21)
  • AI摳圖使用指南:Stable Diffusion WebUI Rembg實(shí)用技巧

    AI摳圖使用指南:Stable Diffusion WebUI Rembg實(shí)用技巧

    ? 摳圖是圖像處理工具的一項(xiàng)必備能力,可以用在重繪、重組、更換背景等場景。最近我一直在探索 Stable Diffusion WebUI 的各項(xiàng)能力,那么 SD WebUI 的摳圖能力表現(xiàn)如何呢?這篇文章就給大家分享一下。 作為一個(gè)生成式AI,SD本身并沒有精細(xì)的摳圖控制能力,它需要借助插件來實(shí)

    2024年02月14日
    瀏覽(26)
  • 【adb命令】Android實(shí)用技巧之a(chǎn)db命令:getprop,setprop命令使用

    一、getprop 1.1 getprop簡介 getprop命令的作用就是從系統(tǒng)的各種配置文件中讀取一些設(shè)備的信息。這些文件在我們的手機(jī)設(shè)備中是可以找到的。 1.2 查詢所有的配置 會(huì)列出所有的配置信息 這些配置中以ro開頭的是只讀屬性。 1.3 查看單個(gè)配置信息 可以在adb shell getprop后面加屬性名

    2024年02月04日
    瀏覽(28)
  • chatGPT使用說明,相關(guān)技巧,使用記錄等等

    它的工作原理是基于自然語言處理技術(shù)和深度學(xué)習(xí)算法。當(dāng)用戶輸入問題時(shí),我會(huì)將問題分解成并進(jìn)行語義分析,以 理解用戶的意圖 。接著,我會(huì)調(diào)用內(nèi)部的知識(shí)庫和外部資源,比如搜索引擎、數(shù)據(jù)庫等,尋找與問題相關(guān)的答案,并通過 回答、提供鏈接、建議 等方式

    2024年02月03日
    瀏覽(22)
  • JavaScript 中 try...catch 的 10 個(gè)使用技巧

    作為一位 Web 前端工程師,JavaScript 中的 try…catch 是我們常用的特性之一。 try…catch 可以捕獲代碼中的異常并防止應(yīng)用程序崩潰。但是try…catch 不僅僅是簡單地捕獲異常。本文我將分享 10 個(gè)有用的 try…catch 使用技巧,讓你在處理異常時(shí)更加得心應(yīng)手。 如果你想捕獲代碼中所

    2024年02月01日
    瀏覽(31)
  • 【AI大模型應(yīng)用開發(fā)】【LangChain系列】9. 實(shí)用技巧:大模型的流式輸出在 OpenAI 和 LangChain 中的使用

    【AI大模型應(yīng)用開發(fā)】【LangChain系列】9. 實(shí)用技巧:大模型的流式輸出在 OpenAI 和 LangChain 中的使用

    大家好,我是同學(xué)小張,日常分享AI知識(shí)和實(shí)戰(zhàn)案例 歡迎 點(diǎn)贊 + 關(guān)注 ??, 持續(xù)學(xué)習(xí) , 持續(xù)干貨輸出 。 +v: jasper_8017 一起交流??,一起進(jìn)步??。 微信公眾號(hào)也可搜【同學(xué)小張】 ?? 本站文章一覽: 當(dāng)大模型的返回文字非常多時(shí),返回完整的結(jié)果會(huì)耗費(fèi)比較長的時(shí)間。如果

    2024年04月09日
    瀏覽(36)
  • 【建議收藏】新到手的電腦Windows10/11系統(tǒng)優(yōu)化、使用規(guī)范和技巧及軟件推薦,提升范電腦性能和體驗(yàn)

    【建議收藏】新到手的電腦Windows10/11系統(tǒng)優(yōu)化、使用規(guī)范和技巧及軟件推薦,提升范電腦性能和體驗(yàn)

    目錄 一、了解電腦 1. 查看電腦和系統(tǒng)的基本信息? 2. 電腦測(cè)評(píng) 二 、Windows10/11系統(tǒng)優(yōu)化及設(shè)置 1. 控制面板、回收站等桌面圖標(biāo)顯示設(shè)置 2. 任務(wù)欄管理 3.?桌面圖標(biāo)排列 4. 卸載程序 5. 關(guān)閉P2P分享(傳遞優(yōu)化) 6.?電設(shè)置腦為高性能 7.??刪除存儲(chǔ)中的臨時(shí)文件 8.?磁盤清理 9.

    2024年02月12日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包