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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ES6(2015)】Map

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ES6(2015)】Map 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 基本語法
  • 2. 遍歷方式
  • 3. WeekMap

ES6 提供了 Map 數據結構。它類似于對象,也是鍵值對的集合,但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當作鍵。也就是說,Object 結構提供了“字符串—值”的對應,Map 結構提供了“值—值”的對應,是一種更完善的 Hash 結構實現。如果你需要“鍵值對”的數據結構,Map 比 Object 更合適。

1. 基本語法

let map = new Map([1,'one'],[2,'two'])

Map中可以是一個數組或者其他 iterable 對象,其元素為鍵值對。 每個鍵值對都會添加到新的 Map。null 會被當做 undefined。

添加數據

let keyObj = {} let keyFunc = function() {} let keyString = 'a string'// 添加鍵 map.set(keyString, "string value") map.set(keyObj, 'object value') map.set(keyFunc, 'function value')

刪除數據

// 刪除指定的數據 map.delete(keyString) // 刪除所有數據 map.clear()

統計數據

// 統計所有 key-value 的總數 console.log(map.size) //2 // 判斷是否存在 key-value console.log(map.has(keyObj)) // true

查詢數據
get() 方法返回某個 Map 對象中的一個指定元素

console.log(map.get(keyObj)) // 和鍵keyObj關聯的值

2. 遍歷方式

  • keys() 返回按照順序插入 Map 對象中每個元素的 key 值
  • values() 返回按順序插入Map對象中每個元素的 value 值
  • entries() 返回包含[key, value] 對的Iterator對象,順序與 Map 對象的插入順序相同
  • forEach() 按插入順序對 Map 對象進行遍歷
  • for...of 可以直接遍歷每個成員
for (let key of map.keys()) {console.log(key) }for (let value of map.values()) {console.log(value) }for (let [key, value] of map.entries()) {console.log(key, value) }map.forEach((value, key) => console.log(value, key))for (let [key, value] of map) {console.log(key, value) }

Object 與 Map 的對比:

  • 鍵的類型:Object的鍵只能是字符串或Symbol類型;Map可以是任意值(包括函數、對象等)
  • 鍵的順序:Object的鍵值對是無序的;Map中的鍵值對是有序的,遍歷時是按插入的順序;
  • 個數統計:Object鍵值對個數只能手動計算;Map可以用size屬性獲取個數;
  • 鍵值對遍歷:Map迭代方法更多;
  • 性能:Map在頻繁增刪鍵值對的場景下性能較好

3. WeekMap

WeakMap結構與Map結構類似,也是用于生成鍵值對的集合。

// WeakMap 可以使用 set 方法添加成員 const wm1 = new WeakMap() const key = {foo: 1 } wm1.set(key, 2) wm1.get(key) // 2// WeakMap 也可以接受一個數組, // 作為構造函數的參數 const k1 = [1, 2, 3] const k2 = [4, 5, 6] const wm2 = new WeakMap([[k1, 'foo'],[k2, 'bar'] ]) wm2.get(k2) // "bar"

WeakMap與Map的區別有兩點:

  • WeakMap只接受對象作為鍵名(null除外),不接受其他類型的值作為鍵名
  • WeakMap 不能包含無引用的對象,否則會被自動清除出集合(垃圾回收機制);
const map = new WeakMap() map.set(1, 2) // TypeError: 1 is not an object! map.set(Symbol(), 2) // TypeError: Invalid value used as weak map key map.set(null, 2) // TypeError: Invalid value used as weak map key

WeakMap有什么作用呢?

  • 通過 WeakMap 緩存計算結果
// 使用 WeakMap,你可以將先前計算的結果與對象相關聯,而不必擔心內存管理。以下功能 countOwnKeys() 是一個示例:它將以前的結果緩存在 WeakMap 中 cache。 const cache = new WeakMap();function countOwnKeys(obj) {if (cache.has(obj)) {return [cache.get(obj), 'cached'];} else {const count = Object.keys(obj).length;cache.set(obj, count);return [count, 'computed'];} }let obj = { name: "kakuqo", age: 30 }; console.log(countOwnKeys(obj)); // [2, 'computed'] console.log(countOwnKeys(obj)); // [2, 'cached'] obj = null; // 當對象不在使用時,設置為null
  • 在 WeakMap 中保留私有數據
// 在以下代碼中,WeakMap _counter 和 _action 用于存儲以下實例的虛擬屬性的值: const _counter = new WeakMap(); const _action = new WeakMap();class Countdown {constructor(counter, action) {_counter.set(this, counter);_action.set(this, action);}dec() {let counter = _counter.get(this);counter--;_counter.set(this, counter);if (counter === 0) {_action.get(this)();}} }let invoked = false; const countDown = new Countdown(3, () => invoked = true); countDown.dec(); countDown.dec(); countDown.dec(); console.log(`invoked status: ${invoked}`)

總結

以上是生活随笔為你收集整理的【ES6(2015)】Map的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 2021久久 | 少妇搡bbbb搡bbb搡小说 | 国产精品videos| 香蕉久久夜色精品 | 人妻丰满熟妇av无码久久洗澡 | 玖玖爱在线精品视频 | 国产精品久久久久久一区 | 国产91大片 | 欧美××××黑人××性爽 | 国产综合久久久久 | 日韩一级黄色片 | 青娱乐国产精品 | 亚洲精品国产精品国自产观看 | 毛片综合 | 久久av无码精品人妻出轨 | 青青草国产精品视频 | jizz成熟丰满日本少妇 | 久久久精品视频在线 | 激情综合五月天 | 日本91在线 | 亚洲另类图区 | 亚洲天堂网视频 | av少妇 | 欧美视频一区二区三区四区在线观看 | 久久福利免费视频 | 伊人精品国产 | 午夜免费在线 | 黄色免费在线观看网站 | 爆操av | 成年人福利网站 | 91美女片黄在线观看 | 国产精品久免费的黄网站 | 成人综合网站 | 中文字幕欲求不满 | 国产日韩欧美综合在线 | 欧美午夜精品一区二区三区电影 | 国产午夜福利100集发布 | 麻豆网站视频 | 黄色的网站在线 | 少妇人妻一区二区三区 | 亚洲精品国产片 | 闺蜜张开腿让我爽了一夜 | 探花国产 | 91精品看片 | a视频网站 | 邻居少妇张开双腿让我爽一夜 | 免费在线观看的av | 婷婷激情在线 | 欧美精品一区视频 | 99插插插 | 欧州一区二区 | 日本大胆欧美人术艺术 | 97伊人久久| 欧美人体一区二区 | 黑人巨大精品一区二区在线 | 欧美极品jizzhd欧美 | 国产123区在线观看 91国产一区二区 | 男人操女人免费视频 | 天堂在线观看视频 | 国产日韩欧美另类 | 一区二区三区不卡视频在线观看 | 欧美一级片在线视频 | 91精品啪在线观看国产 | 久久伊人av | 欧美成人精精品一区二区频 | a视频在线 | 国精产品一区一区三区mba下载 | 四虎黄色片 | 国产av 一区二区三区 | 一区二区三区四区五区在线视频 | 欧美日本亚洲韩国国产 | 国产精品一级视频 | 亚洲视频综合网 | 91久久国产综合久久91精品网站 | 国产激情一区二区三区 | 国产网红女主播精品视频 | 亚洲一一在线 | 美女网站免费视频 | 成人毛片100部免费看 | 欧美熟妇另类久久久久久不卡 | 成人欧美一区二区三区在线观看 | 日韩欧美一区二区在线 | 岛国av片 | 精精国产xxxx视频在线 | 欧美日韩在线观看一区二区三区 | 丰满人妻一区二区三区免费 | 欧美一级啪啪 | 欧美草比视频 | 黄网在线免费观看 | 欧美精品一区二区三 | a√在线视频 | 欧美精品99久久久 | 拍真实国产伦偷精品 | 在线观看成人免费视频 | 一级大片免费 | 天天射寡妇射 | 91美女视频在线观看 | 免费黄在线看 | 伊人www22综合色 |