成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

初探ES6中的Map和WeakMap

liukai90 / 1317人閱讀

摘要:對象保存鍵值對。清空用于移除對象中指定的元素。執(zhí)行刪除操作返回一個值,用來表明中是否存在指定元素一樣的后面的會覆蓋前面的值把對象轉(zhuǎn)換為迭代器返回一個新的對象對象是一組鍵值對的集合,其中的鍵是弱引用的。其鍵必須是對象,而值可以是任意的。

Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。
使用映射對象
let myMap=new Map();
let keyObj={},keyfunc=function(){},keysTring="hello word";
set(key,value) 添加值
myMap.set(keysTring,"keysTring的關(guān)聯(lián)值")
myMap.set(keyfunc,"keyfunc的關(guān)聯(lián)值")
myMap.set(keyObj,"keyObj的關(guān)聯(lián)值")
size 獲取Map的大小
console.log(myMap.size)  //3
get(key) 獲取map的值
console.log(myMap.get(keysTring)) //keysTring的關(guān)聯(lián)值
console.log(myMap.get("hello word")) //keysTring的關(guān)聯(lián)值


----------


console.log(myMap.get(keyfunc)) //keyfunc的關(guān)聯(lián)值
console.log(function(){}===keyfunc)  //false 
console.log(myMap.get(function(){})) //undefined, 因為keyFunc !== function () {}


----------


console.log(myMap.get(keyObj)) //keyObj的關(guān)聯(lián)值
console.log({}===keyObj)  //false 
console.log(myMap.get({})) //undefined 因為keyObj !== {}
將NaN作為映射的鍵
myMap.set(NaN, "not a number");
console.log(myMap.get(NaN))  //not a number

var otherNaN=Number("foo");
console.log(otherNaN)  //NaN
console.log(myMap.get(otherNaN))  //not a number 也可以取值
映射與數(shù)組對象的關(guān)系
let kvArray = [["key1", "value1"], ["key2", "value2"]];
var myMap1 = new Map(kvArray);
//使用映射對象常規(guī)的構(gòu)造函數(shù)將一個二維鍵值對數(shù)組對象轉(zhuǎn)換成一個映射關(guān)系
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)  //0
delete(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"); //執(zhí)行刪除操作
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")); //false
entries()把map對象轉(zhuǎn)換為迭代器
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); 根據(jù)key刪除value
2.get(key);根據(jù)key獲取value
3.has(key) 根據(jù)key檢查是不是存在value
4.set(key,value) 根據(jù)key設(shè)置value

let 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 

每天進步一點,希望大家喜歡,也希望喜歡的朋友點個贊,后續(xù)繼續(xù)更新...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93859.html

相關(guān)文章

  • es6 MapWeakMap

    摘要:事實上,不僅僅是數(shù)組,任何具有接口且每個成員都是一個雙元素的數(shù)組的數(shù)據(jù)結(jié)構(gòu)都可以當(dāng)做構(gòu)造函數(shù)的參數(shù)。返回所有成員的遍歷器需要特別注意的是,的遍歷順序就是插入順序。轉(zhuǎn)為轉(zhuǎn)為,正常情況下,所有鍵名都是字符串。 Map JavaScript 的對象(Object),本質(zhì)上是鍵值對的集合(Hash 結(jié)構(gòu)),但是傳統(tǒng)上只能用字符串當(dāng)作鍵。這給它的使用帶來了很大的限制。為了解決這個問題,ES6 提...

    sPeng 評論0 收藏0
  • 細說es6中的SetMap

    摘要:返回一個布爾值,表示該值是否為的成員。返回鍵名的遍歷器返回鍵值的遍歷器返回鍵值對的遍歷器使用回調(diào)函數(shù)遍歷每個成員需要特別指出的是,的遍歷順序就是插入順序。該數(shù)組的所有成員,都會自動成為實例對象的成員。這意味著,數(shù)組的成員只能是對象。 1.Set ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。Set 本身是一個構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)...

    Ryan_Li 評論0 收藏0
  • 深入理解:ES6中的SetMap數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換

    摘要:學(xué)習(xí)筆記工作中常用到的語法只是簡單提及和,今天有空于是寫了這篇文章深入理解中的和數(shù)據(jù)結(jié)構(gòu),與其它數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換。的提供了新的數(shù)據(jù)結(jié)構(gòu)。本身是一個構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。 文中的內(nèi)容主要是來自于阮一峰的《ES6標(biāo)準(zhǔn)入門》(第三版)?!秾W(xué)習(xí)ES6筆記──工作中常用到的ES6語法》只是簡單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu),M...

    Cristalven 評論0 收藏0
  • ES6 系列之 WeakMap

    摘要:一個對象若只被弱引用所引用,則被認(rèn)為是不可訪問或弱可訪問的,并因此可能在任何時刻被回收。也就是說,一旦不再需要,里面的鍵名對象和所對應(yīng)的鍵值對會自動消失,不用手動刪除引用。如果有錯誤或者不嚴(yán)謹(jǐn)?shù)牡胤?,請?wù)必給予指正,十分感謝。 前言 我們先從 WeakMap 的特性說起,然后聊聊 WeakMap 的一些應(yīng)用場景。 特性 1. WeakMap 只接受對象作為鍵名 const map = ...

    CollinPeng 評論0 收藏0
  • es6 Mapset

    摘要:返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。該數(shù)組中的每一項也必須是數(shù)組,內(nèi)部數(shù)組的首個項會作為鍵,第二項則為對應(yīng)值。返回所有成員的遍歷器需要特別注意的是,的遍歷順序就是插入順序。 Js大部分歷史時期都只存在一種集合類型,也就是數(shù)組類型。數(shù)組在 JS 中的使用正如其他語言的數(shù)組一樣,但缺少更多類型的集合導(dǎo)致數(shù)組也經(jīng)常被當(dāng)作隊列與棧來使用。數(shù)組只使用了數(shù)值型的索引,而...

    superPershing 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<