摘要:其他情況返回方法用于移除對象中指定的元素語法參數(shù)必須,從對象中移除的元素的鍵返回值如果對象中存在該元素,則移除它并返回否則如果該元素不存在則返回返回。
一、創(chuàng)建Map對象
Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值
1.構(gòu)造函數(shù)語法:new Map([iterable])
參數(shù):
? ? ? ? iterable? 可以是一個數(shù)組或者其他 iterable 對象,其元素或為鍵值對,或為兩個元素的數(shù)組;每個鍵值對都會添加到新的 Map,null 會被當(dāng)做 undefined
let arr = [1,2,3]; let myMap = new Map(arr.entries()); console.log(myMap.get(0)); // 1二、Map實例屬性 1.myMap.size 可訪問屬性返回 Map 對象的元素數(shù)量
size 屬性的值是一個整數(shù),表示 Map 對象有多少個鍵值對。size 是只讀屬性,它對應(yīng)的 set 方法是 undefined,即不能改變它的值
let myMap = new Map(); myMap.set("a", "alpha"); myMap.set("b", "beta"); myMap.set("g", "gamma"); console.log(myMap.size); // 3三、Map實例方法 1.set()
語法:myMap.set(key, value)
參數(shù):
? ? ? ? key 必填,添加到Map對象的元素的key值
? ? ? ? value 必填,添加到Map對象的元素的value值
let myMap = new Map(); myMap.set("bar", "foo"); myMap.set(1, "foobar"); // 在Map對象中更新一個新元素 myMap.set("bar", "baz");2.get()
語法:myMap.get(key)
參數(shù):
? ? ? ? key 想要獲取的元素的鍵
返回值:返回一個Map對象中與指定鍵相關(guān)聯(lián)的值,如果找不到這個鍵則返回undefined
let myMap = new Map(); myMap.set("bar", "foo"); console.log(myMap.get("bar")); // "foo" console.log(myMap.get("baz")); // undefined3.has()
語法:myMap.has(key)
參數(shù):
? ? ? ? ?key 必填,用來檢測是否存在指定元素的鍵值
返回值:如果指定元素存在于Map中,則返回true。其他情況返回false
let myMap = new Map(); myMap.set("bar", "foo"); console.log(myMap.has("bar")); // returns true console.log(myMap.has("baz")); // returns false4.delete() 方法用于移除 Map 對象中指定的元素
語法:myMap.delete(key)
參數(shù):
? ? ? ? key 必須,從 Map 對象中移除的元素的鍵(key)
返回值:如果 Map 對象中存在該元素,則移除它并返回 true;否則如果該元素不存在則返回 false
let myMap = new Map(); myMap.set("bar", "foo"); myMap.delete("bar"); // 返回 true。成功地移除元素 console.log(myMap.size); // 05.clear()方法會移除Map對象中的所有元素
語法:myMap.clear()
let myMap = new Map(); myMap.set("bar","baz"); myMap.set(1,"foo"); console.log(myMap.size); // 2 myMap.clear();6.entries()
語法:myMap.entries()
返回值:返回一個新的包含[key, value]對的Iterator對象,返回的迭代器的迭代順序與Map對象的插入順序相同
let myMap = new Map(); myMap.set("0", "foo"); myMap.set(1, "bar"); myMap.set({}, "baz"); let mapIter = myMap.entries(); console.log(mapIter.next().value); // ["0", "foo"] console.log(mapIter.next().value); // [1, "bar"] console.log(mapIter.next().value); // [Object, "baz"]7.keys() 返回一個新的 Iterator 對象。它包含按照順序插入Map對象中每個元素的key值
語法:myMap.keys()
let myMap = new Map(); myMap.set("0", "foo"); myMap.set(1, "bar"); myMap.set({}, "baz"); let mapIter = myMap.keys(); console.log(mapIter.next().value); // "0" console.log(mapIter.next().value); // 1 console.log(mapIter.next().value); // Object8.values() 方法返回一個新的Iterator對象。它包含按順序插入Map對象中每個元素的value值
語法:myMap.values()
let myMap = new Map(); myMap.set("0", "foo"); myMap.set(1, "bar"); myMap.set({}, "baz"); let mapIter = myMap.values(); console.log(mapIter.next().value); // "foo" console.log(mapIter.next().value); // "bar" console.log(mapIter.next().value); // "baz"9.forEach()
語法:myMap.forEach(callback[, thisArg])
參數(shù):
? ? ? ? callback 必要,每個元素所要執(zhí)行的函數(shù)
? ? ? ? thisArg 可選,callback 執(zhí)行時其 this 的值
let myMap = new Map([["foo", 3], ["bar", {}], ["baz", undefined]]); myMap.forEach((value,key,map) => { console.log("key =",key,",value =",value); //key = foo ,value = 3 });
? ? ? ?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98454.html
摘要:在和中都保留了數(shù)組的強引用,所以在中簡單的清除變量內(nèi)存并沒有得到釋放,因為還存在引用計數(shù)。而在中,它的鍵是弱引用,不計入引用計數(shù)中,所以當(dāng)被清除之后,數(shù)組會因為引用計數(shù)為而被回收掉。其實我們主要注意的引用是不計引用計數(shù)的,就好理解了。 showImg(https://segmentfault.com/img/remote/1460000019147368?w=900&h=383); 前...
摘要:我的目的是確保所有引用的使用都是絕對安全的,編譯器會自動進行檢查。它導(dǎo)致了數(shù)不清的錯誤漏洞和系統(tǒng)崩潰,可能在之后年中造成了十億美元的損失。這個函數(shù)將使用一個表示我們希望進行轉(zhuǎn)換的函數(shù)參數(shù),并返回一個包含轉(zhuǎn)換結(jié)果的新參數(shù)。 翻譯原文出處:Building a Maybe in JavaScript 鄙人翻譯略差且略有出入,別見笑。 很多時候我們會碰到:Uncaught TypeError...
摘要:以此類推,不定參數(shù)的方程也就被稱為可變參數(shù)函數(shù)。一般來說,函數(shù)式編程中的值都被認為是不可變值。實現(xiàn)了函數(shù)的對象,即可以與其他對象進行對比判斷是否屬于同一類型,被稱為。半群一個擁有,即將另一個對象轉(zhuǎn)化為相同類型的函數(shù),函數(shù)的對象稱為。 原文地址譯者的Github 系列文章地址本文原作者尚未全部完成,有興趣的可以到原文或者譯文地址關(guān)注更新 Functional Programming Ja...
摘要:四是在年出的持久性數(shù)據(jù)結(jié)構(gòu)的庫,持久性指的是數(shù)據(jù)一旦創(chuàng)建,就不能再被更改,任何修改或添加刪除操作都會返回一個新的對象。避免大量使用操作,這樣會浪費性能。盡量將設(shè)計成扁平狀的。 一、痛點 在我們的印象中,React 好像就意味著組件化、高性能,我們永遠只需要關(guān)心數(shù)據(jù)整體,兩次數(shù)據(jù)之間的 UI 如何變化,則完全交給 React Virtual Dom 的 Diff 算法 去做。以至于我們很...
摘要:實現(xiàn)實現(xiàn)一個深拷貝函數(shù),就不得不說的數(shù)值類型。類型來看下面代碼,結(jié)果會返回啥呢答案是有時候保存了元素,一不小心進行深拷貝,上面的深拷貝函數(shù)就缺少了對元素的判斷。在不同的場景下,要根據(jù)業(yè)務(wù)場景,判斷是否需要使用深拷貝。 javascript深拷貝是初學(xué)者甚至有經(jīng)驗的開發(fā)著,都會經(jīng)常遇到問題,并不能很好的理解javascript的深拷貝。 深拷貝(deepClone)? 與深拷貝相對的就是...
閱讀 2398·2021-09-22 16:01
閱讀 3164·2021-09-22 15:41
閱讀 1182·2021-08-30 09:48
閱讀 497·2019-08-30 15:52
閱讀 3335·2019-08-30 13:57
閱讀 1720·2019-08-30 13:55
閱讀 3671·2019-08-30 11:25
閱讀 767·2019-08-29 17:25