JavaScript下一版本标准ES6的Set集合使用详解

JavaScript下一版本标准ES6的Set集合使用详解

什么是Set集合

Set是一种新的数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。Set有以下特点:

  • Set内部使用Hash表存储元素,导致元素的顺序不是按照插入顺序保存,但是一组具有相同内容的对象在Set内只有一份。
  • Set添加元素时,不会进行类型转换,比如1和"1"是两个不同的值。因此,Set内部判断两个值是否相等,使用的是“Same-value-zero equality”算法,类似于Javascript使用的“===”来比较,区别是Set将NaN视为相等。
  • Set的成员可以是任意类型,包括对象的引用,但是添加到Set中的对象必须是唯一的。

Set集合的基本使用

创建Set对象

我们可以使用Set类来创建Set对象,创建一个空的Set对象可以用空的参数列表:

const set = new Set();

也可以使用数组作为Set对象的初始化值,数组中的重复元素会被当成一个元素处理:

const arr = [1,2,2,3,3,3];
const set = new Set(arr);
// set: Set(3) { 1, 2, 3 }

Set对象的基本操作

使用add方法向Set对象中添加元素,delete方法删除元素,clear方法清空Set对象;使用size属性获取Set集合中元素的数量。

const set = new Set();
set.add(1);
set.add(2);
set.add(3);
console.log(set);//Set(3) {1, 2, 3}
set.delete(2); 
console.log(set);//Set(2) {1, 3}
set.clear();
console.log(set);//Set(0) {}
console.log(set.size);//0

Set对象的遍历

  • values()方法返回一个包含Set集合内所有值的迭代器
  • keys()方法返回一个包含Set集合内所有值的迭代器(与values()方法相同)
  • entries()方法返回一个包含Set集合内所有值的迭代器(与values()方法相同)
const set = new Set(['a', 'b', 'c', 'd']);
for (const val of set.values()) {
    console.log(val);
}
// 输出:a b c d

Set集合的高级用法

交集、并集和差集

  • union:获取两个集合的并集
  • intersection:获取两个集合的交集
  • difference:获取两个集合的差集
const a = new Set([1, 2, 3, 4]);
const b = new Set([3, 4, 5, 6]);

// union
const union = new Set([...a, ...b]);
console.log(union); // Set(6) { 1, 2, 3, 4, 5, 6 }

// intersection
const intersection = new Set([...a].filter(x => b.has(x)));
console.log(intersection); // Set(2) { 3, 4 }

// difference
const difference = new Set([...a].filter(x => !b.has(x)));
console.log(difference); // Set(2) { 1, 2 }

Set集合和数组之间的转换

  • Set转成Array
const set = new Set([1, 2, 3]);
const arr = Array.from(set);
console.log(arr); // [1, 2, 3]
  • Array转成Set
const arr = [1, 2, 3, 3, 2, 1];
const set = new Set(arr);
console.log(set); // Set(3) {1, 2, 3}

示例说明

示例一:使用Set获取数组中的不重复元素

const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3, 4, 5]

示例二:判断两个数组是否完全相同

const a = [1, 2, 3];
const b = [1, 2, 3];
const c = [1, 2, 4];

const isEqual = (arr1, arr2) => {
  const s1 = new Set(arr1);
  const s2 = new Set(arr2);
  if (s1.size !== s2.size) {
    return false;
  }
  for (let i of s1) {
    if (!s2.has(i)) {
      return false;
    }
  }
  return true;
}

console.log(isEqual(a, b)); // true
console.log(isEqual(a, c)); // false

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript下一版本标准ES6的Set集合使用详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 浅谈JavaScript暂时性死区与垃圾回收机制

    浅谈JavaScript暂时性死区与垃圾回收机制 什么是暂时性死区 暂时性死区(Temporal Dead Zone,TDZ)指在代码块中,在声明变量前使用该变量会造成ReferenceError的行为。 具体来说,在ES6之前,声明变量的方式有var和函数声明(function declaration),它们没有块级作用域,而是函数级作用域。 在以下代码中…

    JavaScript 2023年5月28日
    00
  • Python、Javascript中的闭包比较

    下面我将详细讲解Python和JavaScript中的闭包比较。 什么是闭包? 在JavaScript和Python中,闭包是指可以访问外部函数作用域的函数。简单地说,内部函数可以访问外部函数中的变量。这意味着,即使外部函数已经返回,内部函数也可以访问并操作它们。 Python中的闭包 下面我们来看一个Python中的闭包示例: def outer_func…

    JavaScript 2023年6月10日
    00
  • 浅谈Ajax和JavaScript的区别

    浅谈Ajax和JavaScript的区别 JavaScript JavaScript是一种通过HTML页面向用户提供动态交互体验的客户端脚本语言。JavaScript可以用于控制DOM结构、获取和修改页面上的各种元素、响应用户的交互操作等。JavaScript可以直接写在HTML文件中,也可以作为外部文件引入。 下面是一个JavaScript的示例代码,它定…

    JavaScript 2023年6月11日
    00
  • JavaScript原生对象之Date对象的属性和方法详解

    JavaScript原生对象之Date对象的属性和方法详解 Date对象是什么? Date对象是JavaScript中原生的日期对象,它可以用来表示时间、日期或时间和日期的组合。Date对象支持大量的属性和方法用于获取、设置、操作日期时间值,它也广泛用于网络和客户端开发中。 Date对象的基本属性 Date对象内置了几个基本属性用于获取和设置日期时间值: D…

    JavaScript 2023年6月10日
    00
  • JavaScript实现无限轮播效果

    JavaScript实现无限轮播效果攻略 1. 实现思路 实现无限轮播效果,主要思路是在轮播图的首尾各添加一张相同的图片,每次轮播到首尾两张相同的图片时,再次无缝链接到对面的一张同样的图片,就会呈现出无限轮播的效果。 具体步骤如下: 获取轮播图的元素和所有轮播项的元素 在轮播图的首尾各添加一张相同的图片 设置轮播图元素的宽度为一个轮播项的宽度 给轮播图元素添…

    JavaScript 2023年6月11日
    00
  • JS中split()用法(将字符串按指定符号分割成数组)

    JS中split()用法(将字符串按指定符号分割成数组) 在JavaScript中,split()是一个常用的字符串方法,它可以将一个字符串按照指定的分隔符,将其分割成若干部分,并将分割后的每一部分存储到一个数组中。下面是该方法的详细讲解以及两个示例说明,供大家参考。 语法 split()方法的语法格式如下: string.split(separator,l…

    JavaScript 2023年5月28日
    00
  • JS实现直接运行html代码的方法

    JS 实现直接运行 html 代码的方法其实比较简单,一般步骤如下: 创建一个 iframe,将需要运行的 html 代码动态插入到 iframe 中; 通过 iframe contentWindow 属性获取 iframe 文档 window 对象; 将要执行的代码放在 window.onload 回调函数中,保证代码执行在页面元素都已经加载完毕后; 在 …

    JavaScript 2023年6月11日
    00
  • JavaScript Date对象功能与用法学习记录

    JavaScript Date对象功能与用法学习记录 什么是JavaScript Date对象? 在JavaScript中,Date对象用来表示日期和时间。它允许你通过数值表示时间,从而可以进行日期和时间的运算,比如加减、比较等操作。 一个Date对象包含了以下几个属性: 年份 (取值范围为4位数字形式,例如:2021) 月份 (0表示一月,11表示十二月)…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部