首页 > 其他分享 >Set 数据结构

Set 数据结构

时间:2024-09-25 17:06:31浏览次数:1  
标签:Set console log mySet value add 数据结构

Set 是一种 集合数据结构,它类似于数组,但与数组不同的是它没有重复值

一、创建 Set

创建一个新的集合,通过add方法添加数据

const mySet = new Set()
mySet.add(1)
mySet.add(2)
mySet.add(2)
mySet.add(3)
mySet.add(4)
console.log(mySet)

直接初始化集合

const mySet = new Set([1,2,2,3,4])
console.log(mySet)

上面两种代码均打印如下:

二、实例的属性和方法

  • size: 返回Set实例的成员总数 
    console.log(mySet.size) // 返回集合的大小
  • add(value): 添加某个value 
    mySet.add(5)
  • delete(value): 删除某个值,返回一个布尔值,表示删除是否成功
    mySet.delete(2)
  • has(value):  返回一个布尔值,表示该值是否为Set的成员
    console.log(mySet.has(2))// false
  • clear: 清除所有成员,没有返回值
    mySet.clear()

三、遍历

  • keys(): 返回键名的遍历器
         for (let i of mySet.keys()){
            console.log(i) //1,2,3,4
          }
  • values(): 返回键值的遍历器
          for (let i of mySet.values()){
            console.log(i) //1,2,3,4
          }
  • entries(): 返回键值对的遍历器
        for (let i of mySet.entries()){
            console.log(i) //[1,1], [2,2],[3,3],[4,4] 键、值都相等
          }
  • forEach(): 遍历每个成员 
          // Set没有索引值,只是具体的值。所以遍历的index和value相等
          mySet.forEach((value,index)=>{
            console.log(value) //1,2,3,4
            console.log(index) //1,2,3,4
          });
  • for...of:Set内部已实现了迭代器,所以可以是用for...of
         for (let value of mySet){
            console.log(value) //1,2,3,4
          }
  • 解构赋值:
    console.log([...mySet]) //[1,2,3,4]

四、复杂数据结构去重

 //复杂数据结构去重
    function uni(arr){
        let res = new Set()
        const newarr =  arr.filter(item=>{
            let id = JSON.stringify(item)
            if(res.has(id)){
                return false
            }else{
                res.add(id)
                return true
            }
        })
        return newarr
    }
    var arr=[
        1,
        'ceshi',
        {name:'zhanfsan'},
        {name:'zhanfsan'},
        {name:'lisi'},
        [1,2],
        [3,4],
        [1,2],
        undefined,
        NaN,
        undefined,
        NaN
    ]
    var newarr = uni(arr)
    console.log(newarr)

 

标签:Set,console,log,mySet,value,add,数据结构
From: https://www.cnblogs.com/yangkangkang/p/18431680

相关文章

  • 【数据结构】图的遍历
    快乐的流畅:个人主页个人专栏:《C游记》《进击的C++》《Linux迷航》远方有一堆篝火,在为久候之人燃烧!文章目录引言一、深度优先遍历1.1定义1.2实现二、广度优先遍历2.1定义2.2实现三、DFS与BFS的对比引言前置知识:【数据结构】图的概念和存储结......
  • 关于Pinia 使用setup方式书写 $reset方法失效问题
    在当我使用的时候踩到一个坑:当我在使用$reset想要重置state数据的时候,却报错了,经过排查发现是因为没有使用选项式进行编写代码关于$reset方法Pinia文档中只有简短的介绍:您可以通过调用 store 上的 $reset() 方法将状态重置到其初始值:conststore=useStore()store.$reset(......
  • 架构师日记-从数据库发展历程到数据结构设计探析
    一数据库发展史起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代,关系数据库理论的提出,以表格形式组织数据,数据之间存在关联关系,具有了良好的结构化和规范......
  • 数据结构:二叉树 (Heap堆篇) 手把手带你入门数据结构~ (简单易懂超详细~)
    文章目录前言一、树的概念1.树的概念与结构2.树的特性3.树的相关术语4.树的表示方法5.树形结构实际场景二、二叉树1.二叉树的概念2.二叉树的结构3.满二叉树3.完全二叉树1.完全二叉树的概念2.完全二叉树的性质3.完全二叉树的结构三、堆1.堆的概念2.堆的......
  • 数据结构:双向链表(Doubly Linked List篇)手把手带你入门数据结构~
    文章目录前言一、双向链表的概念1.结构特点:2.优点:二、双向链表的实现1.双向链表的结构2.双向链表初始化3.双向链表销毁4.双向链表打印5.双向链表尾插6.双向链表头插7.双向链表尾删8.双向链表头删9.双向链表查找10.双向链表指定位置插入11.双向链表指定位置......
  • Map and Set
    MapandSet1.搜索树1.1概念二叉搜索树又称二叉排序树,他或者是一颗空树,或者是具有一下性质的二叉树若它的左子树不为空则左子树上所有节点都小于根节点的值若它的右子树不为空则右子树上所有节点都大于根节点的值他的左右子树也分别是二叉搜索树//创建一个二叉搜索......
  • 《 C++ 修炼全景指南:十二 》用红黑树加速你的代码!C++ Set 和 Map 容器从入门到精通
    摘要本文详细介绍了基于红黑树实现的Set和Map容器,包括其底层设计原理、插入和删除操作的实现细节、性能分析与优化策略,以及实际应用场景和未来发展方向。通过采用红黑树的数据结构,Set和Map容器能够高效地处理有序数据,保持O(logn)的时间复杂度,适用于各种数据存储......
  • Spark(十)SparkSQL DataSet
    DataSetDataSet是具有强类型的数据集合,需要提供对应的类型信息1.创建DataSet使用样例类序列创建DataSetscala>caseclassperson(id:Int,name:String,age:Int)definedclasspersonscala>valcaseClassDS=Seq(person(1,"zhangsan",23)).toDS()caseClassDS:org.apa......
  • git reset --hard执行之后怎么撤回
    情况一,执行reset命令前commit过根据你的gitreflog输出,显示你最近的操作是:HEAD@{0}:gitreset--hardHEAD,即你重置到了当前的HEAD。HEAD@{1}:这是你克隆仓库时的记录。由于HEAD@{0}和HEAD@{1}都指向相同的提交f776dba,这意味着你在执行gitreset--hard之前和之后......
  • 15.8 在k8s部署prometheus statefulset
    本节重点介绍:检查,kube-systemns[root@prome-master01prometheus]#kubectlgetpod-nkube-systemNAMEREADYSTATUSRESTARTSAGEcoredns-7d75679df-7f7tx1/1Running088mcoredns-7d75679df-qmzbg1/1Running088metcd-prome-master011/1Running088mkube-apise......