亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

初探ES6中的Map和WeakMap

liukai90 / 1373人閱讀

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

Map 對(duì)象保存鍵值對(duì)。任何值(對(duì)象或者原始值) 都可以作為一個(gè)鍵或一個(gè)值。
使用映射對(duì)象
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, 因?yàn)閗eyFunc !== function () {}


----------


console.log(myMap.get(keyObj)) //keyObj的關(guān)聯(lián)值
console.log({}===keyObj)  //false 
console.log(myMap.get({})) //undefined 因?yàn)閗eyObj !== {}
將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ù)組對(duì)象的關(guān)系
let kvArray = [["key1", "value1"], ["key2", "value2"]];
var myMap1 = new Map(kvArray);
//使用映射對(duì)象常規(guī)的構(gòu)造函數(shù)將一個(gè)二維鍵值對(duì)數(shù)組對(duì)象轉(zhuǎn)換成一個(gè)映射關(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()方法會(huì)移除Map對(duì)象中的所有元素。
let clearMap=new Map();
clearMap.set("hello","word");
console.log(clearMap.size)  //1
clearMap.clear();   //清空
console.log(clearMap.size)  //0
delete(key)用于移除 Map 對(duì)象中指定的元素。
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) 返回一個(gè)bool值,用來(lái)表明map 中是否存在指定元素.
let hasMap=new Map();
hasMap.set("hi","word");
hasMap.set("hi","hello word");
console.log(hasMap)  //Map { "hi" => "hello word" }   一樣的key后面的value會(huì)覆蓋前面的值
console.log(hasMap.has("hi")); //true
console.log(hasMap.has("hello")); //false
entries()把map對(duì)象轉(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() 返回一個(gè)新的Iterator對(duì)象
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 對(duì)象是一組鍵/值對(duì)的集合,其中的鍵是弱引用的。其鍵必須是對(duì)象,而值可以是任意的。
WeakMap只提供了4個(gè)方法:
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")  //異常   因?yàn)閃eakMap的鍵只能是個(gè)對(duì)象
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 

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93859.html

相關(guān)文章

  • es6 MapWeakMap

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

    sPeng 評(píng)論0 收藏0
  • 細(xì)說(shuō)es6中的SetMap

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

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

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

    Cristalven 評(píng)論0 收藏0
  • ES6 系列之 WeakMap

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

    CollinPeng 評(píng)論0 收藏0
  • es6 Mapset

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

    superPershing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<