初探ES6中的Map和WeakMap
生活随笔
收集整理的這篇文章主要介紹了
初探ES6中的Map和WeakMap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。
使用映射對象
let myMap=new Map(); let keyObj={},keyfunc=function(){},keysTring='hello word';set(key,value) 添加值
myMap.set(keysTring,'keysTring的關聯值') myMap.set(keyfunc,'keyfunc的關聯值') myMap.set(keyObj,'keyObj的關聯值')size 獲取Map的大小
console.log(myMap.size) //3get(key) 獲取map的值
console.log(myMap.get(keysTring)) //keysTring的關聯值 console.log(myMap.get('hello word')) //keysTring的關聯值----------console.log(myMap.get(keyfunc)) //keyfunc的關聯值 console.log(function(){}===keyfunc) //false console.log(myMap.get(function(){})) //undefined, 因為keyFunc !== function () {}----------console.log(myMap.get(keyObj)) //keyObj的關聯值 console.log({}===keyObj) //false console.log(myMap.get({})) //undefined 因為keyObj !== {}將NaN作為映射的鍵
myMap.set(NaN, "not a number"); console.log(myMap.get(NaN)) //not a numbervar otherNaN=Number('foo'); console.log(otherNaN) //NaN console.log(myMap.get(otherNaN)) //not a number 也可以取值映射與數組對象的關系
let kvArray = [["key1", "value1"], ["key2", "value2"]]; var myMap1 = new Map(kvArray); //使用映射對象常規的構造函數將一個二維鍵值對數組對象轉換成一個映射關系 console.log(myMap1) //Map { 'key1' => 'value1', 'key2' => 'value2' } console.log(myMap1.get('key1')) //value1 console.log([...myMap1]) //[ [ 'key1', 'value1' ], [ 'key2', 'value2' ] ]forEach()
var myMap2 = new Map(kvArray); myMap2.forEach((value,index)=>{console.log(value+'---'+index) //value1---key1 value2---key2 })for..of
var myMap3 = new Map(kvArray); for(var a of myMap3){console.log(a) //[ 'key1', 'value1' ] [ 'key2', 'value2' ] }for(var [key,value] of myMap3){console.log('key:'+key+', value:'+value) //key:key1, value:value1 key:key2, value:value2 }clear()方法會移除Map對象中的所有元素。
let clearMap=new Map(); clearMap.set('hello','word'); console.log(clearMap.size) //1 clearMap.clear(); //清空 console.log(clearMap.size) //0delete(key)用于移除 Map 對象中指定的元素。
let delMap=new Map(); delMap.set('hi','word'); delMap.set('hello','word'); console.log(delMap) //Map { 'hi' => 'word', 'hello' => 'word' } delMap.delete('hi'); //執行刪除操作 console.log(delMap) //Map { 'hello' => 'word' }has(key) 返回一個bool值,用來表明map 中是否存在指定元素.
let hasMap=new Map(); hasMap.set('hi','word'); hasMap.set('hi','hello word'); console.log(hasMap) //Map { 'hi' => 'hello word' } 一樣的key后面的value會覆蓋前面的值 console.log(hasMap.has('hi')); //true console.log(hasMap.has('hello')); //falseentries()把map對象轉換為迭代器
let entriesMap=new Map(); entriesMap.set('a','A'); entriesMap.set('b','B'); let entries=entriesMap.entries(); console.log(entries.next()); //{ value: [ 'a', 'A' ], done: false } console.log(entries.next().value); //[ 'b', 'B' ] console.log(entries.next()); //{ value: undefined, done: true }values() 返回一個新的Iterator對象
let valueMap=new Map(); valueMap.set('a','A'); valueMap.set('b','B'); let values=valueMap.values(); console.log(values.next()) //{ value: 'A', done: false } console.log(values.next()) //{ value: 'B', done: false } console.log(values.next()) //{ value: undefined, done: true }WeakMap 對象是一組鍵/值對的集合,其中的鍵是弱引用的。其鍵必須是對象,而值可以是任意的。
WeakMap只提供了4個方法:
1.delete(key); 根據key刪除value 2.get(key);根據key獲取value 3.has(key) 根據key檢查是不是存在value 4.set(key,value) 根據key設置valuelet weakMap=new WeakMap(); weakMap.set('hi','word') //異常 因為WeakMap的鍵只能是個對象 let obj1={}; weakMap.set(obj1,'word') //正常 console.log(weakMap) //WeakMap {} console.log(weakMap.get(obj1)) //word console.log(weakMap.has(obj1)) //true console.log(weakMap.delete(obj1)) //true每天進步一點,希望大家喜歡,也希望喜歡的朋友點個贊,后續繼續更新...
總結
以上是生活随笔為你收集整理的初探ES6中的Map和WeakMap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle数据库导入导出expdp/i
- 下一篇: 【ZZ】详解哈希表的查找