站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        es6的set和map的區(qū)別是什么

        區(qū)別:1、set指的是“集合”結(jié)構(gòu),而Map指的是“字典”結(jié)構(gòu);2、set是以“[value, value]”的形式儲存元素,而Map是以“[key, value]”的形式儲存;3、Map可用get()通過鍵查找特定值并返回,而set不行。

        es6的set和map的區(qū)別是什么

        本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

        簡述:

        • Set 和 Map 主要的應(yīng)用場景在于 數(shù)據(jù)重組 和 數(shù)據(jù)儲存。
        • Set 是一種叫做集合的數(shù)據(jù)結(jié)構(gòu),Map 是一種叫做字典的數(shù)據(jù)結(jié)構(gòu)。

        集合 與 字典 的區(qū)別:

        • 共同點:集合、字典 可以儲存不重復(fù)的值
        • 不同點:集合 是以 [value, value]的形式儲存元素,字典 是以 [key, value] 的形式儲存

        集合(Set)

        ES6 新增的一種新的數(shù)據(jù)結(jié)構(gòu),類似于數(shù)組,但成員是唯一且無序的,沒有重復(fù)的值。

        Set 本身是一種構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)。

        Set 對象允許你儲存任何類型的唯一值,無論是原始值或者是對象引用。

        const s = new Set() [1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x)) for (let i of s) {     console.log(i)	// 1 2 3 4 } // 去重數(shù)組的重復(fù)對象 let arr = [1, 2, 3, 2, 1, 1] [... new Set(arr)]	// [1, 2, 3]

        注意:向 Set 加入值的時候,不會發(fā)生類型轉(zhuǎn)換,所以`5`和`"5"`是兩個不同的值。Set 內(nèi)部判斷兩個值是否不同,使用的算法叫做“Same-value-zero equality”,它類似于**精確相等**運算符(`===`),主要的區(qū)別是**`NaN`等于自身,而精確相等運算符認(rèn)為`NaN`不等于自身。**

        let set = new Set(); let a = NaN; let b = NaN; set.add(a); set.add(b); set // Set {NaN}  let set1 = new Set() set1.add(5) set1.add('5') console.log([...set1])	// [5, "5"]

        操作方法:

        • add(value):新增,相當(dāng)于 array里的push。

        • delete(value):存在即刪除集合中value。

        • has(value):判斷集合中是否存在 value。

        • clear():清空集合。

        遍歷方法:遍歷方法(遍歷順序為插入順序)

        • keys():返回一個包含集合中所有鍵的迭代器。

        • values():返回一個包含集合中所有值得迭代器。

        • entries():返回一個包含Set對象中所有元素得鍵值對迭代器。

        • forEach(callbackFn, thisArg):用于對集合成員執(zhí)行callbackFn操作,如果提供了 thisArg 參數(shù),回調(diào)中的this會是這個參數(shù),沒有返回值。

        字典(Map):

        是一組鍵值對的結(jié)構(gòu),具有極快的查找速度。

        const m = new Map() const o = {p: 'haha'} m.set(o, 'content') m.get(o)	// content  m.has(o)	// true m.delete(o)	// true m.has(o)	// false

        操作方法:

        • set(key, value):向字典中添加新元素。
        • get(key):通過鍵查找特定的數(shù)值并返回。
        • has(key):判斷字典中是否存在鍵key。
        • delete(key):通過鍵 key 從字典中移除對應(yīng)的數(shù)據(jù)。
        • clear():將這個字典中的所有元素刪除。

        遍歷方法:

        • Keys():將字典中包含的所有鍵名以迭代器形式返回。
        • values():將字典中包含的所有數(shù)值以迭代器形式返回。
        • entries():返回所有成員的迭代器。
        • forEach():遍歷字典的所有成員。

        總結(jié)**:**

        Set:

        • 指的是“集合”結(jié)構(gòu)

        • [value, value],鍵值與鍵名是一致的(或者說只有鍵值,沒有鍵名)。

        • 不能通過鍵查找特定值

        Map:

        • 指的是“字典”結(jié)構(gòu)

        • [key, value],鍵值與鍵名是不一致的

        • Map可用get()通過鍵查找特定值并返回

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 国产精品国产三级国产潘金莲| 欧美精品第欧美第12页| 99视频在线观看精品| 国产午夜精品一本在线观看 | 国产精品 一区 在线| 91精品欧美综合在线观看| 久久国产精品久久精品国产| 无码日韩精品一区二区免费暖暖| 亚洲麻豆精品国偷自产在线91 | 精品国产乱码一区二区三区| 国产综合精品一区二区三区| 国产精品三级在线观看无码| 国产亚洲一区二区精品| 成人精品一区二区久久久| 久久国产精品国语对白| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲七七久久精品中文国产| 亚洲一区精品无码| 精品国产一区二区三区久久久狼| 精品一区二区三区免费| 日本精品自产拍在线观看中文 | 精品久久久久久无码中文字幕| 人妻偷人精品成人AV| 91精品成人免费国产| 久久精品国产第一区二区| 成人精品一区二区三区中文字幕| 国产成人精品久久亚洲高清不卡 | 久久精品人人槡人妻人人玩AV | 911亚洲精品国产自产| 狼色精品人妻在线视频| 国产精品夜色视频一级区| 无码人妻精品一区二区三区99仓本| 午夜精品福利视频| 香蕉久久夜色精品国产小说| 亚洲欧洲精品成人久久奇米网| 99热亚洲精品6码| 国产精品色内内在线播放| 无码人妻精品一区二区三区99不卡| 亚洲国产精品线在线观看| 久久久久国产精品熟女影院| 精品国产黑色丝袜高跟鞋|