国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

初探ES6中的Map和WeakMap

liukai90 / 1316人閱讀

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

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)  //3
get(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 number

var 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)  //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"); //執行刪除操作
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對象轉換為迭代器
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設置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 

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93859.html

相關文章

  • es6 MapWeakMap

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

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

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

    Ryan_Li 評論0 收藏0
  • 深入理解:ES6中的SetMap數據結構,Map與其它數據結構的互相轉換

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

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

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

    CollinPeng 評論0 收藏0
  • es6 Mapset

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

    superPershing 評論0 收藏0

發表評論

0條評論

liukai90

|高級講師

TA的文章

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