摘要:和是新增的種集合類型,在前面已經(jīng)講過。對應(yīng)的不會對方法的結(jié)果產(chǎn)生影響。方法的第一個參數(shù)也就是一個接受,,本身這三個參數(shù)。會按照鍵值對的插入順序輪詢得到打印結(jié)果以上,就是的一些基本特性和使用場景,下一篇我們講。
Set和Map是ES6新增的2種集合類型,Set在前面已經(jīng)講過。這一篇我們主要來講一下Map。我們先來看一些Map的基本定義和描述:
1: Map是一種存儲著多個鍵值對的有序列表 2: Map的元素的key和value可以是任何數(shù)據(jù)類型 3: 鍵名的等值性通過Object.is()判斷,所以數(shù)字5和字符串"5"是兩個獨立的key
廢話不多說,我們來看看Map的基本用法:
一:創(chuàng)建和初始化一個Map
1:創(chuàng)建一個空Map
let map = new Map();
以上,我們創(chuàng)建了一個沒有元素的空Map。
2:用Array初始化Map
let map = new Map([["name", "mike"],["age", 25]]); map.forEach(function (value, key, map) { console.log(`${key}: ${value}`) })
得到打印結(jié)果:
name: mike age: 25
用Array初始化Map,需要一個二維數(shù)組,二維數(shù)組里面的每一個元素(也就是一個一維數(shù)組)包含2個元素,第一個元素是鍵值對的key,第二個元素是鍵值對的value。
二:Map的增
在上面的內(nèi)容里,我們說到通過調(diào)用new Map()創(chuàng)建了一個空Map。那如果我們想要往這個map里存儲數(shù)據(jù),可以調(diào)用set(key, value)來完成:
let map = new Map(); map.set("name", "mike"); map.set("age", 25); map.forEach(function (value, key, map) { console.log(`${key}: ${value}`) })
以上的打印得到:
name: mike age: 25
set()方法,第一個參數(shù)為key,第二個參數(shù)為value。
三:Map的刪
跟Set一樣,我們也可以通過調(diào)用clear()方法來刪除整個map里面的元素:
let map = new Map([["name", "mike"],["age", 25]]); map.clear(); console.log(map.size); // 0
四:Map的查
1: 我們可以通過has()方法來查看在map里是否存在某個鍵名
let map = new Map([["name", ""],["age", 0]]); console.log(map.has("name")); //true console.log(map.has("age"));//true console.log(map.has("country"));//false
需要特別注意的是,has()方法只檢查某個key是否存在,存在就返回true,不存在就返回false。key對應(yīng)的value不會對has()方法的結(jié)果產(chǎn)生影響。
2: 我們可以通過get()方法來獲取某個key對應(yīng)的value
let map = new Map([["name", "mike"],["age", 25]]); console.log(map.get("name")); // mike console.log(map.get("age")); // 25 console.log(map.get("country")); // undefined
如果獲取某個不存在的key,此方法返回undefined。
五:Map的減
與Set一樣,我們可以調(diào)用delete(key)刪除一個鍵值對:
let map = new Map([["name", "mike"], ["age", 25]]); map.delete("name"); console.log(map.size); // 1
六:Map的forEach()方法
Map當(dāng)然也有forEach()方法,我們在前面的例子其實已經(jīng)使用過了。forEach()方法的第一個參數(shù)(也就是一個function)接受value,key,map本身這三個參數(shù)。forEach()會按照鍵值對的插入順序輪詢:
let map = new Map(); map.set(2, "lily"); map.set("name", "dan"); map.set(1, "mike"); map.forEach(function (value, key, mapSelf) { console.log(`${key}: ${value}`); })
得到打印結(jié)果:
2: lily name: dan 1: mike
以上,就是Map的一些基本特性和使用場景,下一篇我們講WeakMap。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106194.html
摘要:引入的數(shù)據(jù)結(jié)構(gòu)新加入的數(shù)據(jù)類型有這些數(shù)據(jù)結(jié)構(gòu)的支持并不廣泛,在寫這篇文章的時候。是或其他可枚舉的對象,其每個元素是的元數(shù)組。開頭的和不對持有引用,不影響。因此,他們沒有辦法對自身的進行直接的枚舉。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...
摘要:學(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)準入門》(第三版)?!秾W(xué)習(xí)ES6筆記──工作中常用到的ES6語法》只是簡單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu),M...
摘要:創(chuàng)建并添加項目可以使用數(shù)組來初始化一個,并且構(gòu)造器會確保不重復(fù)地使用這些值使用方法來測試某個值是否存在于中移除值使用方法來移除單個值,或調(diào)用方法來將所有值從中移除。屬性的初始化將數(shù)組傳遞給構(gòu)造器,以便使用數(shù)據(jù)來初始化一個。 主要知識點:Set的基本操作,Weak Set,Map的基本操作,Weak MapshowImg(https://segmentfault.com/img/bVbf...
摘要:但是有了尾調(diào)用優(yōu)化之后,遞歸函數(shù)的性能有了提升。常被用來檢查對象中是否存在某個鍵名,集合常被用來獲取已存的信息。循環(huán)解構(gòu)對象本身不支持迭代,但是我們可以自己添加一個生成器,返回一個,的迭代器,然后使用循環(huán)解構(gòu)和。 一、let和const 在JavaScript中咱們以前主要用關(guān)鍵var來定義變量,ES6之后,新增了定義變量的兩個關(guān)鍵字,分別是let和const。對于變量來說,在ES5中...
摘要:我對數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)最近在上做了一道題目,嗯,我這個渣渣沒有做出來,然后看了別人的解決方案,是時候?qū)W習(xí)一下的了。。。。。讀取對應(yīng)的鍵值,如果找不到返回鍵是函數(shù)返回一個布爾值,表示某個鍵是否在數(shù)據(jù)結(jié)構(gòu)中。 我對ES6數(shù)據(jù)結(jié)構(gòu)Map的學(xué)習(xí) 最近在CodeWars上做了一道題目,嗯,我這個渣渣沒有做出來,然后看了別人的解決方案,Map??? 是時候?qū)W習(xí)一下ES6的Map了。。。。。 以下是原題...
摘要:新增了數(shù)據(jù)結(jié)構(gòu),對象保存鍵值對,任何值原始值或?qū)ο蠖伎梢宰鳛橐粋€鍵或一個值。基本用法實例的屬性和操作方法方法設(shè)置鍵名對應(yīng)的鍵值為,然后返回整個結(jié)構(gòu)。獲取的值方法返回一個布爾值,表示某個鍵是否在當(dāng)前對象之中。如果刪除失敗,返回。 ES6新增了 Map數(shù)據(jù)結(jié)構(gòu),Map對象保存鍵值對,任何值(原始值或?qū)ο螅┒伎梢宰鳛橐粋€鍵或一個值。 基本用法 let map = new Map(); let...
閱讀 2915·2021-11-25 09:43
閱讀 2342·2021-11-24 09:39
閱讀 2728·2021-09-23 11:51
閱讀 1418·2021-09-07 10:11
閱讀 1466·2019-08-27 10:52
閱讀 1949·2019-08-26 12:13
閱讀 3369·2019-08-26 11:57
閱讀 1407·2019-08-26 11:31