摘要:之前,數(shù)組是里面的唯一一個(gè)集合對(duì)象。沒有重復(fù)的元素的列表。而的元素是一個(gè)個(gè)的鍵值對(duì)。在后面的內(nèi)容,我們可以看到怎樣為它添加元素。這是區(qū)別于普通對(duì)象的地方一般的對(duì)象,數(shù)值型的屬性名會(huì)被強(qiáng)制轉(zhuǎn)換為字符串型但是不會(huì)。
ES6之前,數(shù)組是javaScript里面的唯一一個(gè)集合對(duì)象。如果你接觸過其他編程語言,可能會(huì)知道用來表示集合的數(shù)據(jù)結(jié)構(gòu)往往還有兩種:Set和Map。
Set沒有重復(fù)的元素的列表。而Map的元素是一個(gè)個(gè)的鍵值對(duì)。這一篇我們只說Set,Map會(huì)另起一篇文章。接下來我們就來看看Set的相關(guān)知識(shí):
一:創(chuàng)建Set
1: 通過new Set()創(chuàng)建一個(gè)空列表
let set = new Set();
以上我們就成功地創(chuàng)建好了一個(gè)Set列表,只是它暫時(shí)沒有任何元素。在后面的內(nèi)容,我們可以看到怎樣為它添加元素。
2: 以一個(gè)可迭代對(duì)象初始化列表
let array = [1, 2]; let map = new Map([["name", "mike"],["age", 25]]); let setOfArray = new Set(array); let setOfMap = new Set(map); setOfArray.forEach(function (value, key, set) { console.log(`${key}: ${value}`); }); setOfMap.forEach(function (value, key, set) { console.log(`${key}: ${value}`); });
以上例子里面的setOfArray.forEach()我們得到的打印結(jié)果是:
1: 1 2: 2
從這個(gè)打印結(jié)果,我們也可以看得出來,Set元素的key和value是同一個(gè)值。
以上例子里面的setOfMap.forEach()我們得到的打印結(jié)果是:
name,mike: name,mike age,25: age,25
雖然我們可以用Map初始化一個(gè)Set,但是顯然這么做沒什么意義。通常我們還是更多會(huì)使用Array。
二:Set的增
當(dāng)我們通過給new Set()不傳遞任何參數(shù)而創(chuàng)建一個(gè)空Set之后,一般還需要通過add()方法來添加元素:
let set = new Set(); set.add(1); set.add("1"); console.log(set.size); // 2
在上面的例子里,我們分別添加了數(shù)字型的和字符串形的1,最終我們得到兩個(gè)元素。這是Set區(qū)別于普通對(duì)象的地方:一般的對(duì)象,數(shù)值型的屬性名會(huì)被強(qiáng)制轉(zhuǎn)換為字符串型;但是Set不會(huì)。
三:Set的刪
想要?jiǎng)h除Set里面的所有元素,只需要調(diào)用clear()方法:
let set = new Set([1, 2, 3]); set.clear(); console.log(set.size); // 0
四:Set的查
我們可以通過has()方法來查詢某個(gè)元素是否在Set集合里面:
let set = new Set([1, 2, 3]); console.log(set.has(1)); //true console.log(set.has("1"));//false
五:Set的減
delete()方法可用于從Set集合里面除去某個(gè)元素:
let set = new Set([1, 2, 3]); set.delete(1); console.log(set.has(1)); //fasle console.log(set.size); // 2
七:Set的使用場(chǎng)景
從前面的文章中我們陸陸續(xù)續(xù)了解到了Set集合的一些重要特性,比如:
1: Set沒有重復(fù)元素 2: Set元素的key和value為同一值 3: 我們可以使用可迭代對(duì)象初始化Set
根據(jù)這些特性,我們可以實(shí)現(xiàn)Array的去重?;镜乃悸肪褪牵?/p>
1: 要處理的Array集合作為參數(shù)來初始化Set集合,這時(shí)我們得到一個(gè)沒有重復(fù)元素的Set 2: 通過展開運(yùn)算符(...), 把第一步得到的Set集合轉(zhuǎn)換為一個(gè)數(shù)組
代碼示例:
let originalArray = [1, 1, 2, 2, 3, 4]; let set = new Set(originalArray); let newArray = [...set]; console.log(newArray); // [1, 2, 3, 4]
以上,就是Set的一些基本特性,語法和使用場(chǎng)景。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106097.html
摘要:引入的數(shù)據(jù)結(jié)構(gòu)新加入的數(shù)據(jù)類型有這些數(shù)據(jù)結(jié)構(gòu)的支持并不廣泛,在寫這篇文章的時(shí)候。是或其他可枚舉的對(duì)象,其每個(gè)元素是的元數(shù)組。開頭的和不對(duì)持有引用,不影響。因此,他們沒有辦法對(duì)自身的進(jìn)行直接的枚舉。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...
摘要:創(chuàng)建并添加項(xiàng)目可以使用數(shù)組來初始化一個(gè),并且構(gòu)造器會(huì)確保不重復(fù)地使用這些值使用方法來測(cè)試某個(gè)值是否存在于中移除值使用方法來移除單個(gè)值,或調(diào)用方法來將所有值從中移除。屬性的初始化將數(shù)組傳遞給構(gòu)造器,以便使用數(shù)據(jù)來初始化一個(gè)。 主要知識(shí)點(diǎn):Set的基本操作,Weak Set,Map的基本操作,Weak MapshowImg(https://segmentfault.com/img/bVbf...
摘要:一概述集合是引入的新的內(nèi)置對(duì)象類型,其特點(diǎn)同數(shù)學(xué)意義的集合,即集合內(nèi)所有元素不重復(fù)元素唯一。數(shù)組集合對(duì)比數(shù)組和集合,數(shù)組可以加入重復(fù)數(shù)據(jù),而集合的所有元素是唯一的不允許重復(fù)。因此,適合臨時(shí)存放一組對(duì)象,以及存放跟對(duì)象綁定的信息。 本文同步帶你入門 帶你入門 JavaScript ES6 (五) 集合,轉(zhuǎn)載請(qǐng)注明出處。 前面我們學(xué)習(xí)了: for of 變量和擴(kuò)展語法 塊作用域變量和解構(gòu)...
摘要:學(xué)習(xí)筆記工作中常用到的語法只是簡(jiǎn)單提及和,今天有空于是寫了這篇文章深入理解中的和數(shù)據(jù)結(jié)構(gòu),與其它數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換。的提供了新的數(shù)據(jù)結(jié)構(gòu)。本身是一個(gè)構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。 文中的內(nèi)容主要是來自于阮一峰的《ES6標(biāo)準(zhǔn)入門》(第三版)?!秾W(xué)習(xí)ES6筆記──工作中常用到的ES6語法》只是簡(jiǎn)單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu),M...
摘要:本身是一個(gè)構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)可以接受一個(gè)數(shù)組或者類數(shù)組對(duì)象作為參數(shù),用來初始化可用于數(shù)組去重方法可以將結(jié)構(gòu)轉(zhuǎn)換為數(shù)組向加入值時(shí),不會(huì)發(fā)生類型轉(zhuǎn)換類似于精確相等,但是要注意在里是等于自身的。 ES6:Set 大神地址:來自阮一峰大神的ES6入門書籍 了解Set ES6提供了數(shù)據(jù)結(jié)構(gòu)Set。類似于數(shù)組,但是沒有重復(fù)值。 Set本身是一個(gè)構(gòu)造函數(shù),用來生成Set數(shù)據(jù)結(jié)構(gòu) const ...
摘要:更新了個(gè)版本,最新正式版是語言的下一代標(biāo)準(zhǔn),早已在年月正式發(fā)布?;静恢С忠苿?dòng)端瀏覽器對(duì)的支持情況版起便可以支持的新特性。比較通用的工具方案有,,,等。 1、ECMAScript是什么? 和 JavaScript 有著怎樣的關(guān)系? 1996 年 11 月,Netscape 創(chuàng)造了javascript并將其提交給了標(biāo)準(zhǔn)化組織 ECMA,次年,ECMA 發(fā)布 262 號(hào)標(biāo)準(zhǔn)文件(ECMA-...
閱讀 1838·2021-11-25 09:43
閱讀 1351·2021-11-22 15:08
閱讀 3762·2021-11-22 09:34
閱讀 3234·2021-09-04 16:40
閱讀 3045·2021-09-04 16:40
閱讀 555·2019-08-30 15:54
閱讀 1343·2019-08-29 17:19
閱讀 1762·2019-08-28 18:13