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

yizhihongxing

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日

相关文章

  • ajax 服务器文本框自动填值

    下面我来详细讲解“ajax 服务器文本框自动填值”的完整攻略。 1. 什么是 AJAX? Ajax 是一种用于创建快速动态网页应用程序的技术。通过使用 Ajax,可以实现无刷新更新页面内容,从而提高用户的交互体验。 2. AJAX如何使文本框自动填值? 使用 Ajax 可以通过向服务器发送异步请求,获取服务器返回的数据,并将数据填充到页面中。因此,我们可以通…

    JavaScript 2023年6月11日
    00
  • JavaScript经典效果集锦

    以下是“JavaScript经典效果集锦”的完整攻略: 简介 “JavaScript经典效果集锦”是一本介绍常见JavaScript特效的书籍,它包含了多种动态、交互式的效果,如轮播图、下拉菜单、滑动特效等。这些效果在Web开发过程中非常常见且实用,因此,学习和掌握它们,对于从事Web开发的人员来说非常重要。本攻略将主要介绍该书内容的实现过程。 步骤 第一步…

    JavaScript 2023年5月18日
    00
  • JavaScript splice()方法详解

    JavaScript splice()方法详解 简介 JavaScript中的splice()方法是用于修改数组的方法之一。可以用它来添加、删除或替换数组的元素。splice()方法允许您使用起始索引和结束索引来确定要操作的一系列元素。 splice()方法的语法如下: array.splice(start, deleteCount, item1, item…

    JavaScript 2023年5月18日
    00
  • JS中使用Array函数shift和pop创建可忽略参数的例子

    下面是JS中使用Array函数shift和pop创建可忽略参数的攻略。 前言 在JS中使用数组函数shift和pop时,我们经常会遇到需要忽略某些参数的情况。这时,我们可以使用类似es6中的解构赋值,通过逗号分隔符来创建可忽略参数。 shift函数示例 shift函数通过删除数组的第一个元素,返回该元素值。我们可以通过shift函数来模拟创建可忽略参数的方式…

    JavaScript 2023年5月27日
    00
  • javascript md5加密代码

    请允许我详细讲解一下 Javascript 编程语言中如何实现 MD5 哈希加密。 什么是 MD5 哈希加密 MD5 是一种哈希算法,可以将任意长度的数据块进行不可逆转的压缩,它被广泛用于密码学的应用中,以保证密码的安全性。MD5 可以将任意长度的消息压缩为 128 bit 的摘要,并且具有不可逆性、唯一性、高效性等特点。 MD5 加密的 Javascrip…

    JavaScript 2023年5月19日
    00
  • JavaScript实现表单注册、表单验证、运算符功能

    下面是JavaScript实现表单注册、表单验证、运算符功能的完整攻略。 表单注册 表单注册流程一般包括以下步骤: 创建表单:在HTML页面中创建表单元素,包括form、input等。 获取表单数据:使用JavaScript获取表单中的各项数据,例如表单中的各个输入框和选择框的值。 验证表单数据:检查表单数据的格式和内容是否符合要求。 提交表单数据:将表单数…

    JavaScript 2023年6月10日
    00
  • vue.js路由跳转详解

    Vue.js 路由跳转详解 Vue.js 是一款用于构建用户界面的渐进式框架。Vue.js 路由可以让你构建单页应用程序 (SPA,Single-Page Application)。本篇文章将详细讲解在 Vue.js 中如何进行路由跳转。 准备工作 在开始路由跳转之前,需要安装 Vue.js 的路由组件。可以根据官方文档进行安装,步骤如下: 在命令行里输入以…

    JavaScript 2023年6月11日
    00
  • JS+Canvas绘制抽奖转盘

    下面是详细讲解“JS+Canvas绘制抽奖转盘”的完整攻略: 一、准备工作 创建 HTML 文件并引入 Canvas(例如:) 获取 Canvas 对象,创建绘图上下文和 Canvas 尺寸 定义需要用到的变量(例如:奖项,概率,角度,旋转速度等) 二、绘制转盘基本结构和奖项 绘制转盘外圆和内圆 绘制奖项扇形,并填充不同的颜色 三、转盘动画 绑定旋转事件(例…

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