ES6:Set
了解Set
ES6提供了資料結構Set。類似於數組,但是沒有重複值。
Set本身就是一個建構函數,用來產生Set資料結構
const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) { console.log(i); //2 3 4 5 }
Set可以接受一個陣列(或類別數組物件)作為參數,用來初始化
var set = new Set([1, 2, 3, 4, 4]); [...set]; // [1, 2, 3, 4]
可用於陣列去重
[...new Set(array)]
Array.from()
方法可以將Set結構轉換為陣列Array.from(new Set(array))
在Set中加入值時,不會發生型別轉換(類似精確相等===),但要注意在Set裡NaN是等於自身的。另外兩個物件總是不相等的。
let set = new Set();let a = NaN;let b = NaN; set.add(a); set.add(b); set; //{NaN} 只能加入一个,说明Set内部两个NaN是相等的
Set實例的屬性與方法
#屬性:
Set.prototype.constructor
:建構函數,預設為Set函數#Set.prototype.size
:傳回實例的成員總數#操作方法(方法的具體實作見:我對JS集合的簡單學習):
add(value )
:新增一個值,回傳Set結構本身delete(value)
:刪除某個值,回傳布林值has(value)
:傳回布林值,表示是否為成員clear()
:清除所有成員,無回傳值
s.add(1).add(2).add(2); //链式写法s.size(); //2s.has(3); //falses.delete(2); s.has(2); //false
遍历方法
keys()
:返回键名的遍历器(什么是遍历器?Iterator)values()
:返回键值的遍历器entries()
:返回键值对的遍历器forEach()
:使用回调函数遍历每个成员
这里要注意Set的键名和键值是同一个值,所以key()和values()行为是一致的。
let set = new Set(['red', 'green', 'no']);for(let item of set.keys()) { console.log(item); //red green no}for(let item of set.values()) { console.log(item); //red green no}for(let item of set.entries()) { console.log(item); //['red': 'red'] ['green': 'green'] ['no': 'no']}//对每个成员执行某种操作,参数依次为键值、键名、集合本身new Set([1, 2, 3]).forEach((value, key) => console.log(value * 2)); //2 4 6
操作集合
let a = new Set([1, 2, 3]);let b = new Set([4, 3, 2]);//并集let union = new Set([...a, ...b]); //{1, 2, 3, 4}//交集let intersect = new Set([...a].filter(x => b.has(x))); //{2, 3}//差集let difference = new Set([...a].filter(x => !b.has(x))); //{1}
号外:扩展运算符(...)内部使用for...of循环,所以应该知道for of是干嘛的吧
数组的map()
和filter()
可用于Set
let set = new Set([1, 2, 3]);set = new Set([...set].map(x => x * 2)); //set: {2, 4, 6}let set = new Set([1, 2, 3, 4, 5]);set = new Set([...set].filter(x => (x % 2) == 0)); //set {2, 4}
以上是ES6的Set資料結構是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

二叉树是计算机科学中常见的数据结构,也是Java编程中常用的一种数据结构。本文将详细介绍Java中的二叉树结构。一、什么是二叉树?在计算机科学中,二叉树是一种树形结构,每个节点最多有两个子节点。其中,左侧子节点比父节点小,右侧子节点则比父节点大。在Java编程中,常用二叉树表示排序,搜索以及提高对数据的查询效率。二、Java中的二叉树实现在Java中,二叉树

想了解更多关于开源的内容,请访问:51CTO开源基础软件社区https://ost.51cto.com一、栈的概念栈由一系列对象对象组织的一个集合,这些对象的增加和删除操作都遵循一个“后进先出”(LastInFirstOut,LIFO)的原则。在任何时刻只能向栈中插入一个对象,但只能取得或者删除只能在栈顶进行。比如由书构成的栈,唯一露出封面的书就是顶部的那本,为了拿到其他的书,只能移除压在上面的书,如图:栈的实际应用实际上很多应用程序都会用到栈,比如:网络浏览器将最近浏览

PHP是一种广泛使用的脚本语言,被广泛用于Web开发,服务器端编程以及命令行编程等。随着PHP不断更新和发展,它也日益成为一个更强大的编程工具,为用户提供了更多的功能和更多的工具来开发高质量的应用程序。其中,数据结构是一个非常重要的领域,一种有效的数据结构可以大大提高程序的性能和可读性。在这篇文章中,我们将讨论PHP8中支持的新数据结构,这些新的数据结构将让

如何解决Java中遇到的代码性能优化问题随着现代软件应用的复杂性和数据量的增加,对于代码性能的需求也变得越来越高。在Java开发中,我们经常会遇到一些性能瓶颈,如何解决这些问题成为了开发者们关注的焦点。本文将介绍一些常见的Java代码性能优化问题,并提供一些解决方案。一、避免过多的对象创建和销毁在Java中,对象的创建和销毁是需要耗费资源的。因此,当一个方法

随着计算机科学的不断发展,数据结构与算法成为了计算机科学领域中最为基础、重要的模块。数据结构是一种组织和存储数据的方式,它是解决问题的基础。算法则是计算机科学的核心,它是指在计算机程序中解决问题的方法和技术。Java作为一种广泛应用的编程语言,其自带的数据结构和算法库是非常强大的,赋予了开发人员更多的力量。一、数据结构Java中提供了多种数据结构,包括数组

go语言数据结构有四大类:1、基础类型,包括整型(有符号和无符号整数)、浮点数、复数、字符串(由不可变的字节序列构成)、布尔值(只有true和false两个值);2、聚合类型,包括数组、结构体(是由任意个任意类型的变量组合在一起的数据类型);3、引用类型,包括指针、slice(是一个拥有相同元素的可变长度序列)、map、function、channel;4、接口类型。

c语言中,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它是计算机存储、组织数据的方式;常见数据结构有:线性数据结构(数组、链表、栈、队列和线性表)、树形结构(二叉树、完全二叉树、二叉查找树、堆)、图形结构(有向图和无向图)。

Java语言是目前应用最广泛的编程语言之一,在计算机领域中应用广泛。在Java中,算法是一种非常重要的概念,从最初的排序算法到数据结构和算法的实现,都涉及到了Java语言的一些常用方法。本文将重点讲解Java语言中常见的算法实现方法,包括排序算法、搜索算法、字符串匹配算法以及树形结构的处理方法等,以便初学者更好的掌握Java语言的算法实现。一、排序算法排序算


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器