日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6-note-Set和Map(草稿)

發(fā)布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6-note-Set和Map(草稿) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前述

??在ES5中,主要用來存儲數(shù)據(jù)的集合就是數(shù)組,當(dāng)然也可以用對象方式存儲鍵值對類型的非數(shù)組型集合,數(shù)組主要通過整形下標(biāo)去定位具體下標(biāo)位置元素,對查詢操作來說,時間復(fù)雜度O(1),比較快,非數(shù)組型對象存儲方式能夠通過類似person.name或是person['name']方式獲取person對象中鍵為"name"所對應(yīng)的值,但是對于有一些特殊的應(yīng)用場景,例如:

let set = Object.create(null); set[5] = 4; set['5'] = 5; console.log(set[5], set['5']);

??上面的實例打印的結(jié)果是什么呢?即便你有些年工作經(jīng)驗,有可能還會被小小的迷惑一下,可能會報錯或者可能輸出4和5?但結(jié)果是輸出兩個5,這是為什么呢,對于這種Nubmer類型的屬性,解析器會把它轉(zhuǎn)換成為字符串類型,所以在內(nèi)存中,屬性5的值會被"5"的值覆蓋掉(屬性還可以是小數(shù)類型),對象類型的屬性會被記錄成為"[object Object]",但有些情況下,我們可能偏偏想要存儲數(shù)值類型和字符類型共存或者是以對象作為屬性的集合呢,那ES5中的數(shù)據(jù)結(jié)構(gòu)似乎確實需要擴展高級的數(shù)據(jù)結(jié)構(gòu)才能應(yīng)對了。

Set和Map基本用法

??數(shù)組去除是js實際項目開發(fā)以及面試中常常會涉及到的知識點,方法多種多樣,網(wǎng)上能夠羅列出10多種(挑選三種思想常用):

1. 先排序,再將相鄰不同值元素依次存入新數(shù)組; 2. 定義新數(shù)組,將原數(shù)組中的元素逐漸添加進去,再利用indexOf判斷過濾; 3. 上例中的使用非數(shù)組集合也是中不錯的方法(效率高,缺點就是無法區(qū)分?jǐn)?shù)值類型和字符類型的值);

??好像有點麻煩,ES6提供的Set就能夠派上用場了:

new Set([1, 2, 3, 1, 2, 3, 4, '4'])// 結(jié)果 Set(5) {1, 2, 3, 4, "4"}

??Set還有個功能就是快速的判斷指定元素是否存在于集合中: set.has(element)就可以,Set還提供了對集合的刪除或清空等操作。

??Map提供了另一重要應(yīng)用,能夠根據(jù)key快速獲取相應(yīng)值,而且和Set一樣,對數(shù)值、字符、對象類型的鍵不會進行轉(zhuǎn)換:

new Map([[5, 4], ['5', 5], [{}, 6 ], [{}, 7]])// 結(jié)果 Map(4) {5 => 4, "5" => 5, Object {} => 6, Object {} => 7}

轉(zhuǎn)載于:https://www.cnblogs.com/boykait/p/10692266.html

總結(jié)

以上是生活随笔為你收集整理的ES6-note-Set和Map(草稿)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。