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