最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中Set和Map數(shù)據(jù)結(jié)構(gòu)使用場景詳解

 更新時間:2023年06月01日 08:59:29   作者:Tom_Li  
這篇文章主要為大家介紹了JavaScript中Set和Map數(shù)據(jù)結(jié)構(gòu)使用場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Set數(shù)據(jù)結(jié)構(gòu)

Set 是 ES6 中引入的一種新的數(shù)據(jù)結(jié)構(gòu),它是一種集合,可以存儲任意類型的數(shù)據(jù)

Set 每個元素的值在集合中是唯一的。

使用 Set 數(shù)據(jù)結(jié)構(gòu)可以方便地去除數(shù)組或?qū)ο笾械闹貜?fù)元素。

應(yīng)用場景

// 1  數(shù)組去重
const arr = [1, 2, 3, 2, 1];
const set = new Set(arr);
const newArr = Array.from(set); // newArr = [1, 2, 3]
// 2 對象去重
const arr = [{ id: 1 }, { id: 2 }, { id: 1 }, { id: 3 }];
const set = new Set(arr.map(item => item.id));
const newArr = Array.from(set, id => ({ id })); 
// newArr = [{ id: 1 }, { id: 2 }, { id: 3 }]

 在上面的代碼中,我們首先使用 Array.map 將數(shù)組中的對象映射為它們的 id 值,

然后使用 new Set 去除重復(fù)的 id 值。

最后,我們使用 Array.from 將集合轉(zhuǎn)換為對象數(shù)組,

并根據(jù)每個 id 值創(chuàng)建一個新的對象,得到不重復(fù)對象的數(shù)組。

Map 數(shù)據(jù)結(jié)構(gòu)

解釋

Map是一種 js 數(shù)據(jù)結(jié)構(gòu),與數(shù)組的 map 方法并非一種,要區(qū)分開來

Map數(shù)據(jù)結(jié)構(gòu)來管理數(shù)據(jù),能提高代碼的可讀性

Map 相比較 對象格式 存儲速度要更快

// 創(chuàng)建一個Map對象
const formData = new Map();
// 添加表單元素的值到Map中
formData.set('username', 'Tom');
formData.set('password', '123456');
// 獲取表單元素的值
const username = formData.get('username');// username = Tom
const password = formData.get('password');// password = 123456

通過使用Map來管理數(shù)據(jù),可以使代碼更加簡潔和易于維護(hù)。

同時,Map也提供了一些方便的方法,如set()、get()、has()、delete()等,可以方便地對數(shù)據(jù)進(jìn)行操作。

使用場景

1. 管理表單數(shù)據(jù)

當(dāng)頁面中有多個表單元素需要進(jìn)行數(shù)據(jù)交互時,可以使用Map來存儲表單數(shù)據(jù)。例如:

const formData = new Map();
formData.set('username', 'Tom');
formData.set('password', '123456');
// 通過get()方法來獲取已存儲的數(shù)據(jù)
const username = formData.get('username');// username = Tom
const password = formData.get('password');// password = 123456

2. 管理頁面狀態(tài)

當(dāng)頁面中存在一些狀態(tài)需要管理時,可以使用Map來存儲狀態(tài)。例如:

const state = new Map();
state.set('loading', false);
state.set('error', null);
// 通過set()方法來更新已存儲的數(shù)據(jù)
state.set('loading', true);
state.set('error', '請求失敗');

3. 管理列表數(shù)據(jù)

當(dāng)頁面中存在一個列表需要管理時,可以使用Map來存儲列表數(shù)據(jù)。例如:

const list = new Map();
list.set(1, { id: 1, name: 'Tom' });
list.set(2, { id: 2, name: 'Join' });
// 通過get()方法來獲取已存儲的數(shù)據(jù)
const item = list.get(1); // item = { id: 1, name: 'Tom' }
const item = list.get(2); // item = { id: 2, name: 'Join' }

4. 管理緩存數(shù)據(jù)

當(dāng)我們需要緩存一些數(shù)據(jù)時,可以使用Map來存儲緩存數(shù)據(jù)。例如:

const cache = new Map();
cache.set('key1', 'value1');
cache.set('key2', 'value2');
// 通過get()方法來獲取已存儲的數(shù)據(jù)
const value = cache.get('key1');// value = value1
const value = cache.get('key2');// value = value2

以上就是JavaScript中Set和Map數(shù)據(jù)結(jié)構(gòu)使用場景詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript Set Map數(shù)據(jù)結(jié)構(gòu)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Javascript?基于長連接的服務(wù)框架問題

    詳解Javascript?基于長連接的服務(wù)框架問題

    本文針對經(jīng)常使用長連接進(jìn)行消息收發(fā)的應(yīng)答場景,采用 Websocket 長連接作為服務(wù)監(jiān)聽的對象,模擬了一套類 http 服務(wù)框架,通過實(shí)例代碼介紹了Javascript?基于長連接的服務(wù)框架,需要的朋友可以參考下
    2022-07-07
  • JavaScript實(shí)現(xiàn)函數(shù)執(zhí)行攔截的多種方法

    JavaScript實(shí)現(xiàn)函數(shù)執(zhí)行攔截的多種方法

    函數(shù)執(zhí)行攔截是JavaScript中強(qiáng)大的元編程技術(shù),可以實(shí)現(xiàn)日志記錄、性能監(jiān)控、權(quán)限控制等功能,本文將深入探討多種函數(shù)攔截方法,從基礎(chǔ)到高級,幫助您全面掌握這一技術(shù),需要的朋友可以參考下
    2025-06-06
  • javascript中導(dǎo)出與導(dǎo)入實(shí)現(xiàn)模塊化管理教程

    javascript中導(dǎo)出與導(dǎo)入實(shí)現(xiàn)模塊化管理教程

    這篇文章主要給大家介紹了關(guān)于javascript中導(dǎo)出與導(dǎo)入實(shí)現(xiàn)模塊化管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • bootstrap響應(yīng)式表格實(shí)例詳解

    bootstrap響應(yīng)式表格實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了bootstrap響應(yīng)式表格的實(shí)例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • JS實(shí)現(xiàn)的模仿QQ頭像資料卡顯示與隱藏效果

    JS實(shí)現(xiàn)的模仿QQ頭像資料卡顯示與隱藏效果

    這篇文章主要介紹了JS實(shí)現(xiàn)的模仿QQ頭像資料卡顯示與隱藏效果,涉及javascript鼠標(biāo)事件響應(yīng)及頁面元素屬性動態(tài)操作相關(guān)技巧,需要的朋友可以參考下
    2017-04-04
  • 微信小程序CSS3動畫下拉菜單效果

    微信小程序CSS3動畫下拉菜單效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序CSS3動畫下拉菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 可編輯下拉框的2種實(shí)現(xiàn)方式

    可編輯下拉框的2種實(shí)現(xiàn)方式

    下拉框想必大家都有見過,可編輯的下拉框就不多見了吧,本例為大家介紹個不錯的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-06-06
  • JavaScript錯誤處理之分析 Uncaught(in promise) error的原因及解決方案

    JavaScript錯誤處理之分析 Uncaught(in promise) error的

    在開發(fā)過程中,JavaScript的錯誤處理是一個老生常談的話題,當(dāng)應(yīng)用程序發(fā)生未捕獲的異常時,Uncaught(in promise) error是其中最常見的錯誤類型,這篇文章將從多個方面詳細(xì)闡述這種錯誤類型的原因與解決方案,感興趣的朋友一起看看吧
    2023-12-12
  • javascript web對話框與彈出窗口

    javascript web對話框與彈出窗口

    web對話框與彈出窗口的js函數(shù)
    2009-02-02
  • 思維導(dǎo)圖插件jsMind的詳細(xì)使用指南

    思維導(dǎo)圖插件jsMind的詳細(xì)使用指南

    jsMind是一個顯示/編輯思維導(dǎo)圖的純的javascript類庫,其基于HTML5的帆布進(jìn)行設(shè)計.jsMind以BSD協(xié)議開源,這篇文章主要給大家介紹了關(guān)于思維導(dǎo)圖插件jsMind的詳細(xì)使用指南,需要的朋友可以參考下
    2024-07-07

最新評論

武隆县| 五常市| 修文县| 肇州县| 和政县| 商丘市| 咸阳市| 青田县| 错那县| 若尔盖县| 崇仁县| 剑川县| 八宿县| 江都市| 洮南市| 卢湾区| 潮州市| 黎城县| 家居| 邵阳县| 呈贡县| 大悟县| 东至县| 青海省| 洛川县| 家居| 盐亭县| 双鸭山市| 涞源县| 宾川县| 沁水县| 平顶山市| 东乡| 资讯 | 哈密市| 库尔勒市| 安新县| 保康县| 栾城县| 建湖县| 托克托县|