JS数据结构与算法-集合

简介: 定义集合是由一组无序且唯一(即不能重复)的项组成。可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。创建一个集合我们使用对象而不是数组来表示集合,因为js的对象不允许一个键指向两个不同的属性,也保证了集合里的元素都是唯一的。
  1. 定义

集合是由一组无序且唯一(即不能重复)的项组成。
可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。

  1. 创建一个集合
    我们使用对象而不是数组来表示集合,因为js的对象不允许一个键指向两个不同的属性,也保证了集合里的元素都是唯一的。
  • 定义set类
function Set() {
  var items = {};
}
  • 实现has方法,如果值在集合中,返回true,否则返回false
this.has = function(value) {
    return items.hasOwnProperty(value);
  };
  • 实现add方法,向集合添加一个新的项
  this.add = function(value) {
    //检查给定的value是否存在集合中,如果不存在,添加并返回true,反之返回false
    if(!this.has(value)) {
      items[value] = value;
      return true;
    }
    return false;
  };
  • 实现remove方法,从集合移除一个值。
this.remove = function(value) {
    //给定的value是否存在于集合中,如果存在,就从这个集合中删除value,返回true,表示值被移除;否则返回false
    if(this.has(value)) {
      delete items[value];
      return true;
    }
    return false;
  };
  • 实现clear方法,移除集合中的所有项
this.clear = function() {
    items = {};
};
  • 实现size方法,返回集合所包含元素的数量
this.size = function() {
    //使用Object.keys()方法
    return Object.keys(items).length;
 };
  • 实现values方法,返回一个包含集合中所有值的数组
this.values = function() {
    //使用Object.keys()方法提取items对象的所有属性
    return Object.keys(items);
};

全部代码:

function Set() {
  var items = {};

  //has方法如果值在集合中,返回true,否则返回false
  this.has = function(value) {
    return items.hasOwnProperty(value);
  };

  //add方法向集合添加一个新的项
  this.add = function(value) {
    //检查给定的value是否存在集合中,如果不存在,添加并返回true,反之返回false
    if(!this.has(value)) {
      items[value] = value;
      return true;
    }
    return false;
  };

  //remove方法,从集合中移除一个值
  this.remove = function(value) {
    //给定的value是否存在于集合中,如果存在,就从这个集合中删除value,返回true,表示值被移除;否则返回false
    if(this.has(value)) {
      delete items[value];
      return true;
    }
    return false;
  };

  //clear方法,移除集合中的所有项
  this.clear = function() {
    items = {};
  };

  //size方法返回集合中所包含元素的数量
  this.size = function() {
    //使用Object.keys()方法
    return Object.keys(items).length;
  };

  //values方法,返回一个包含集合中所有值的数组
  this.values = function() {
    //使用Object.keys()方法提取items对象的所有属性
    return Object.keys(items);
  };
}

var set = new Set();

 set.add(1);
 console.log(set.values()); // ["1"]
 console.log(set.has(1)); // true
 console.log(set.size()); // 1

参考学习

学习javascript数据结构与算法
数据结构与算法javascript描述

目录
相关文章
|
11月前
|
存储 监控 算法
局域网监控其他电脑的设备信息管理 Node.js 跳表算法
跳表通过分层索引实现O(logn)的高效查询、插入与删除,适配局域网监控中设备动态接入、IP映射及范围筛选等需求,相比传统结构更高效稳定,适用于Node.js环境下的实时设备管理。
367 9
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
387 0
|
11月前
|
存储 监控 JavaScript
企业上网监控系统的恶意 URL 过滤 Node.js 布隆过滤器算法
布隆过滤器以低内存、高效率特性,解决企业上网监控系统对百万级恶意URL实时检测与动态更新的难题,通过概率性判断实现毫秒级过滤,内存占用降低96%,适配大规模场景需求。
505 3
|
11月前
|
存储 监控 算法
电脑管控软件的进程优先级调度:Node.js 红黑树算法
红黑树凭借O(log n)高效插入、删除与查询特性,适配电脑管控软件对进程优先级动态调度的高并发需求。其自平衡机制保障系统稳定,低内存占用满足轻量化部署,显著优于传统数组或链表方案,是实现关键进程资源优先分配的理想选择。
455 1
|
12月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
573 3
|
存储 安全 Java
Java 集合面试题从数据结构到 HashMap 源码剖析详解及长尾考点梳理
本文深入解析Java集合框架,涵盖基础概念、常见集合类型及HashMap的底层数据结构与源码实现。从Collection、Map到Iterator接口,逐一剖析其特性与应用场景。重点解读HashMap在JDK1.7与1.8中的数据结构演变,包括数组+链表+红黑树优化,以及put方法和扩容机制的实现细节。结合订单管理与用户权限管理等实际案例,展示集合框架的应用价值,助你全面掌握相关知识,轻松应对面试与开发需求。
673 3
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
380 4
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
394 3
|
存储 监控 算法
公司内部网络监控中的二叉搜索树算法:基于 Node.js 的实时设备状态管理
在数字化办公生态系统中,公司内部网络监控已成为企业信息安全管理体系的核心构成要素。随着局域网内终端设备数量呈指数级增长,实现设备状态的实时追踪与异常节点的快速定位,已成为亟待解决的关键技术难题。传统线性数据结构在处理动态更新的设备信息时,存在检索效率低下的固有缺陷;而树形数据结构因其天然的分层特性与高效的检索机制,逐渐成为网络监控领域的研究热点。本文以二叉搜索树(Binary Search Tree, BST)作为研究对象,系统探讨其在公司内部网络监控场景中的应用机制,并基于 Node.js 平台构建一套具备实时更新与快速查询功能的设备状态管理算法框架。
453 3
|
存储 算法 JavaScript
基于 Node.js 深度优先搜索算法的上网监管软件研究
在数字化时代,网络环境呈现出高度的复杂性与动态性,上网监管软件在维护网络秩序与安全方面的重要性与日俱增。此类软件依托各类数据结构与算法,实现对网络活动的精准监测与高效管理。本文将深度聚焦于深度优先搜索(DFS)算法,并结合 Node.js 编程语言,深入剖析其在上网监管软件中的应用机制与效能。
262 6

热门文章

最新文章