摘要:提供了新的數(shù)據(jù)結(jié)構(gòu)。用法結(jié)構(gòu)有以下屬性構(gòu)造函數(shù),默認(rèn)就是函數(shù)。結(jié)構(gòu)有以下方法添加某個值,返回結(jié)構(gòu)本身。返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。
Set
ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。
用法:new Set([iterable])
const set = new Set([1, 2, 3, 4, 4, 4]); //[1, 2, 3, 4]
Set結(jié)構(gòu)有以下屬性:
Set.prototype.constructor: 構(gòu)造函數(shù),默認(rèn)就是Set函數(shù)。
set.prototype.size : 返回Set的成員總數(shù)。
Set結(jié)構(gòu)有以下方法:
add(value):添加某個值,返回 Set 結(jié)構(gòu)本身。
delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。
has(value):返回一個布爾值,表示該值是否為Set的成員。
clear():清除所有成員,沒有返回值。
const set = new Set(); //添加元素 set.add(1).add(2).add(2); set.size; //2 //檢查元素 set.has(2); //true set.has(3); //false //刪除元素 set.delete(2); set.has(2); //false //清空集合 set.clear(); set.size; //0
一些常見應(yīng)用
//數(shù)組去重 let arr = [1, 2, 3, 2, 5, 5]; let unique = [...new Set(arr)]; // [1, 2, 3, 5] //交,并,差集 let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); // 并集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} // 差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}Map
JavaScript 的對象(Object),本質(zhì)上是鍵值對的集合(Hash 結(jié)構(gòu)),但是傳統(tǒng)上只能用字符串當(dāng)作鍵。ES6中的Map結(jié)構(gòu)也是鍵值對的集合,但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當(dāng)作鍵。
用法:new Map([iterable])
const map = new Map();
屬性和方法
size:返回成員總數(shù)。
set(key, value):添加鍵值對到映射中
get(key):獲取映射中某一個鍵的對應(yīng)值
delete(key):將某一鍵值對移除出映射中
clear():清空映射中所有的鍵值對
entries():返回一個以二元數(shù)組(鍵值對)作為元素的數(shù)組
has(key):檢查映射中是否包含某一鍵值對
keys():返回一個一當(dāng)前映射中所有鍵作為元素的可迭代對象
values():返回一個一當(dāng)前映射中所有值作為元素的可迭代對象
const map = new Map(); //添加鍵值對 map.set(1, "aaa"); map.set(2, "bbb").set("string", "sssss"); map.get(1); // "aaa" map.size; // 3 //刪除鍵值 map.delete(2); map.has(2); //false //遍歷方法 for(let key of map.keys()){ console.log(key); } // 1 // "string" for(let key of map.values()){ console.log(key); } // "aaa" // "sssss" map.forEach(function(value, key, map){ console.log("key:"+key+", value:"+value) }) // "key:1, value:aaa" // "key:string, value:sssss"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95494.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)準(zhǔn)入門》(第三版)。《學(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...
摘要:引入的數(shù)據(jù)結(jié)構(gòu)新加入的數(shù)據(jù)類型有這些數(shù)據(jù)結(jié)構(gòu)的支持并不廣泛,在寫這篇文章的時候。是或其他可枚舉的對象,其每個元素是的元數(shù)組。開頭的和不對持有引用,不影響。因此,他們沒有辦法對自身的進(jìn)行直接的枚舉。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...
摘要:返回一個布爾值,表示該值是否為的成員。返回鍵名的遍歷器返回鍵值的遍歷器返回鍵值對的遍歷器使用回調(diào)函數(shù)遍歷每個成員需要特別指出的是,的遍歷順序就是插入順序。該數(shù)組的所有成員,都會自動成為實例對象的成員。這意味著,數(shù)組的成員只能是對象。 1.Set ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。Set 本身是一個構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)...
摘要:我對數(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了。。。。。 以下是原題...
閱讀 3892·2021-09-23 11:51
閱讀 3071·2021-09-22 15:59
閱讀 873·2021-09-09 11:37
閱讀 2074·2021-09-08 09:45
閱讀 1269·2019-08-30 15:54
閱讀 2068·2019-08-30 15:53
閱讀 495·2019-08-29 12:12
閱讀 3292·2019-08-29 11:15