Set()函数怎么用?Set()结构类型如何转成数组?Set()函数的操作方法有哪些?ES6新增类似数组的数据结构,数据没有重复的值,值具备唯一性。常见的操作Set结构的方法有add/delete/has/clear...下面是详细介绍。

ES6 Set()数据结构 —— 再学Set方法-Qui-Note

Set()定义:

MDN:Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。
W3C:ES6 提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。
个人理解:ES6新增类似数组的数据结构,数据没有重复的值,值具备唯一性。

公式

let a = new Set([])

操作方法:

  • a.add(value)  新增,返回 Set 结构本身。
  • a.delete(value)  删除,返回一个布尔值,表示删除是否成功。
  • a.has(value)  判断是否是子成员,表示该值是否为 Set 的成员。
  • a.clear()  清空,没有返回值。
  • a.size  返回 Set的长度。

注意

1.Set()会将空内容转换成undefined
2.Set()后的值是唯一的
3.Set()的结果不是一个数组,是一个Set数据类型,需用用Array.from()将其转为数组

笔记源码:

let aa = [1,2,3,5,7,,0,5,3]
let bb = new Set(aa)
bb.add(4)
console.log(bb)   // Set(8) {1, 2, 3, 5, 7, …}

if(bb.has(4)){
console.log("has判断成功,4被添加进去了") // 执行
}

if(bb.has(undefined)){
bb.delete(undefined) 
console.log("undefined存在,已经被清除!bb的长度: "+bb.size)  // undefined存在,已经被清除!bb的长度: 7
}


let cc = Array.from(bb)
console.log("转为数组:"+cc) // 转为数组:1,2,3,5,7,0,4

bb.clear() // 清空Set()
console.log(bb) // Set(0) {}