set用法详解

这篇具有很好参考价值的文章主要介绍了set用法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. ES6中的Set是一种新的数据结构,类似于数组,用于存储有序的数据。

  2. Set没有随机访问的能力,不能通过索引来获取具体的某个元素

  3. Set中的元素具有唯一性,不允许存储相同的元素。

  • Set本身是一个构造函数,可以用来实例化Set对象。

  • 通过add()方法可以向Set中添加元素,如果添加的元素已经存在,Set会自动忽略该元素。

  • delete()用于删除元素,

  • setData.size用于获取Set对象的大小(相当于数组的长度),

  • clear()用于清空数据,

  • has()用于判断Set对象中是否存在某个值等。

  • Set对象可以用来进行各种集合操作,例如交集、差集等,具有自动去重唯一性的特点。

 

      //1.声明方式
      let arr = new Set();
      arr.add({ name: "zooey", age: 19 });
      arr.add(20);
      //2.查看元素长度
      const size = arr.size;
      //2.1查看是否有这个元素,可以跟delete配合使用
      console.log(arr.has(20), size);
      //3.根据元素值进行删除
      arr.delete(20);
      //4.重复的元素只会add 1次
      arr.add(3);
      arr.add(3);
​
      arr.add({ name: "zooeyan", age: 19 });
      console.log(arr);

 

set用法详解

 


 

小练习: 数组去重+取交集+取并集+取差集

    
     let arr1 = [1, 3, 4, 4, 5, 7, 7, 9, 10],
        arr2 = [2, 4, 6, 8, 8, 10];
      //1.利用set进行去重  将arr转化为set
      let setArr1 = new Set(arr1);
      let setArr2 = new Set(arr2);
      console.log(setArr1, setArr2); //Set(7) {1, 3, 4, 5, 7,9, 10}  Set(5) {2, 4, 6, 8, 10}
//2.进行比较 -取交集
      const targetArr = [];
      for (const it of setArr2) {
        if (setArr1.has(it)) targetArr.push(it);
      }
      console.log(targetArr); //[4, 10]
      //2.进行比较 -取并集
      const tempArr = [];
      for (const it of setArr2) {
        if (!setArr1.has(it)) tempArr.push(it);
      }
      const bArr = [...tempArr, ...setArr1];
      console.log(bArr); //[2, 6, 8, 1, 3, 4, 5, 7, 9, 10]
//3.进行比较 -取差集 arr1-arr2
      const cArr = [];
      for (const it of setArr1) {
        if (!setArr2.has(it)) cArr.push(it);
      }
      console.log(cArr); // [1, 3, 5, 7, 9]

 

官方是这样做的,更简洁一些

// 可以通过如下代码模拟求交集
const intersection = new Set([...mySet1].filter((x) => mySet2.has(x)));

// 可以通过如下代码模拟求差集
const difference = new Set([...mySet1].filter((x) => !mySet2.has(x)));

 

此外,还有entries()、values()、keys()

 let collection = new Set([
        { name: "zooey", age: 18 },
        { name: "anan", age: 19 },
        { name: "bobo", age: 20 },
      ]);
      //1.entries()
for (const [key, value] of collection.entries()) {
        console.log(key, value); //key: {name: 'zooey', age: 18} value: {name: 'zooey', age: 18}
      }
      //2.keys()
for (const item of collection.keys()) {
        console.log(item); // {name: 'zooey', age: 18}
      }
​
      //3.values()
      for (const item of collection.values()) {
        console.log(item); // {name: 'zooey', age: 18}
      }

 文章来源地址https://www.toymoban.com/news/detail-819279.html

 

到了这里,关于set用法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】搜索树 与 Java集合框架中的Set,Map

    作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA数据结构》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将javaSE基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《

    2024年02月08日
    浏览(37)
  • 【c语言指针详解】复杂数据结构的指针用法

    目录 一、动态内存分配 1.1 使用malloc和free函数进行内存的动态分配和释放 1.2 内存泄漏和野指针的概念和解决方法 二、复杂数据结构的指针用法 2.1 结构体指针和成员访问操作符 2.2 指针数组和指向指针的指针 2.2.1 指针数组 2.2.2 指向指针的指针 2.3 动态内存分配与结构体

    2024年02月04日
    浏览(48)
  • 详解数据结构中的堆

    本篇文章主要讲解如何构建一个堆(本文讲的是二叉堆),堆排序以及TOP-K问题。 首先,储存堆我们用到的是数组,我们把它封装为一个结构体 size是数组里面有效数据的个数,capacity是数组的容量大小。 虽然堆在物理结构上是一个数组,但在逻辑结构上我们把它想象做一个

    2024年02月19日
    浏览(36)
  • Java学数据结构(3)——树Tree & B树 & 红黑树 & Java标准库中的集合Set与映射Map & 使用多个映射Map的案例

    1.B树,阶M,数据树叶上,根的儿子数在2和M之间,除根外,非树叶节点儿子为M/2和M之间; 2.B树的插入引起分裂,B树的删除,引起合并和领养; 3.红黑树,根是黑的,红色节点的儿子必须是黑的,所有路径的黑色节点数相同; 4.红黑树的插入,颜色翻转,单旋转,插入节点定

    2024年02月11日
    浏览(68)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 树状数组 (Binary Indexed Tree,BIT)是一种数据结构,用于高效地处理

    2024年03月11日
    浏览(64)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法、数据结构~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 数据结构各内部排序算法总结对比及动图演示(插入排序

    2024年03月26日
    浏览(82)
  • Mysql中的find_in_set() 函数用法详解及使用场景

    一、find_in_set() 函数详解 示例: 相信大家看完以上示例就知道这个函数的大概作用了,以下是MySQL手册中官方说明 概括一下就是(前一个字符串是A,后一个字符串是B): 如果B字符串包含A字符串:则返回大于0的值,这个值就是A字符串在B字符串的所在位置; 如果B字符串不

    2024年02月13日
    浏览(42)
  • 「数据结构」Map&Set

    🎇 个人主页 :Ice_Sugar_7 🎇 所属专栏 :Java数据结构 🎇 欢迎点赞收藏加关注哦! Map和Set是专门用来进行搜索的容器或者数据结构,它们适合动态查找(即在查找时可能会进行一些插入和删除的操作) 我们一般把搜索的数据称为 (Key) ,和对应的称为 值(

    2024年02月22日
    浏览(48)
  • 带头双向循环链表:一种高效的数据结构

    💓 博客主页:江池俊的博客 ⏩ 收录专栏:数据结构探索 👉专栏推荐:✅cpolar ✅C语言进阶之路 💻代码仓库:江池俊的代码仓库 🔥编译环境: Visual Studio 2022 🎉欢迎大家点赞👍评论📝收藏⭐ 双向循环链表是一种复杂的数据结构,它结合了双向链表和循环链表的优点。与

    2024年02月05日
    浏览(53)
  • [数据结构]-map和set

    前言 作者 : 小蜗牛向前冲 名言 : 我可以接受失败,但我不能接受放弃   如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正   目录 一、键值对 二、set 1、set的基本知识 2、set的使用  三、map 1、map的基本

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包