跳至主要內容

Set

Yang大约 3 分钟

Setopen in new window


概述

  • 是值的集合,允许存储任何类型唯一值,无论是原始值或者是对象引用
  • NaNundefined 都可以被存储在 Set 中, NaN 之间被视为相同的值(NaN被认为是相同的,尽管 NaN !== NaN)
  • 语法:new Set([iterable])
  • 参数
    • iterable:如果传递了一个iterable对象,它的所有元素都将被添加到新的集合中。如果不指定此参数,或其值为 null,则新集合为空

应用

let arr1 = [1, 2, 3, 4, 5, 6]
let arr2 = [3, 4, 5, 6, 7]

let set1 = new Set([...arr1])
let set2 = new Set([...arr2])

// 求并集
let arr3 = new Set([...arr1, ...arr2])
console.log(Array.from(arr3))

// 求交集
let arr4 = new Set(arr1.filter(item => set2.has(item)))
console.log(Array.from(arr4))

// 求差集
let arr5 = new Set(arr1.filter(item => !set2.has(item)))
let arr6 = new Set(arr2.filter(item => !set1.has(item)))
console.log(Array.from([...arr5, ...arr6]))

Set.prototype.sizeopen in new window

对象中元素的个数,访问函数是 undefined, 不能改变这个属性


Set.prototype.add()

  • 描述:向一个 Set 对象的末尾添加一个指定的值

  • 语法:mySet.add(value)

  • 参数

    • value:需要添加到 Set 对象的元素的值
  • 返回值:Set 对象本身

  • 注意:可链式调用,不能添加重复的值


Set.prototype.delete()open in new window

  • 描述:从一个 Set 对象中删除指定的元素
  • 语法:mySet.delete(value)
  • 参数
    • value:将要删除的元素
  • 返回值:成功删除返回 true,否则返回 false

Set.prototype.has()open in new window

  • 描述:返回一个布尔值来指示对应的值 value 是否存在 Set 对象中
  • 语法:mySet.has(value)
  • 参数
    • value:用以测试该值是否存在于 Set 对象中
  • 返回值:如果指定的值存在于Set对象当中,返回true,否则返回 false

Set.prototype.clear()open in new window

  • 描述:清空一个 Set 对象中的所有元素
  • 语法:mySet.clear()
  • 返回值:undefined

Set.prototype.entries()open in new window

  • 描述:返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组
  • 语法:mySet.entries
  • 返回值:一个新的包含 [value, value] 形式的数组迭代器对象,value 是给定集合中的每个元素,迭代器 对象元素的顺序即集合对象中元素插入的顺序

Set.prototype.values()open in new window

  • 描述:方法返回一个 Iterator 对象,该对象按照原Set 对象元素的插入顺序返回其所有元素

  • 语法:mySet.values()

  • 返回值:返回一个新生成的可迭代对象,以插入 Set 对象的顺序返回其包含的每个元素的值


Set.prototype.keys()open in new window

  • 描述:是 Set.prototype.values() 的别名

Set.prototype.forEach()open in new window

  • 描述:根据集合中元素的插入顺序,依次执行提供的回调函数
  • 语法:mySet.forEach(callback[, thisArg])
  • 参数
    • callback:集合中每个元素执行的回调函数,该函数接收三个参数
      • currentValue:正在被操作的元素
      • currentKey:正在被操作的元素(因为集合没有索引)
      • set:调用当前 forEach 方法的集合对象
    • thisArg:回调函数执行过程中的 this 值
上次编辑于:
贡献者: sunzhenyang