JS数据结构与算法-集合
时间:2022-06-09
本文章向大家介绍JS数据结构与算法-集合,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
- 定义
集合是由一组无序且唯一(即不能重复)的项组成。 可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。
- 创建一个集合 我们使用对象而不是数组来表示集合,因为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描述
- Android WebView 上传文件支持全解析
- 网站管理软件 – AspxSpy2014 Final
- 特性分支与特性开关哪家强?
- Android快速开发框架 roboguice
- 悄悄的干活,打枪的不要!勒索+比特币挖矿木马
- 拥有可移动头像的折叠Android工具栏:CollapsingAvatarToolbar
- Android平台下的第一个Tor木马
- 利用代码实现自定义圆角+阴影按钮 android-flat-button
- 周末阅读:程序员的《权利法案》
- 对利用Adobe 0day – CVE-2014-0502进行攻击的行为分析
- Android系统更改状态栏字体颜色
- Android实现竖着的滑动刻度尺效果,选择身高(竖向的)
- DedeCMS全版本通杀SQL注入漏洞利用代码及工具
- Android实现滑动刻度尺效果,选择身高体重和生日
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- django form和field具体方法和属性说明
- 总结PHP中初始化空数组的最佳方法
- tensorflow使用CNN分析mnist手写体数字数据集
- PHP7 mongoDB扩展使用的方法分享
- 主流开源分布式图数据库 Benchmark
- PHP封装的简单连接MongoDB类示例
- 基于Tensorflow的MNIST手写数字识别分类
- Yii框架ACF(accessController)简单权限控制操作示例
- tensorflow 动态获取 BatchSzie 的大小实例
- TP5.0框架实现无限极回复功能的方法分析
- Tensorflow之MNIST CNN实现并保存、加载模型
- tensorflow 大于某个值为1,小于为0的实例
- YII框架模块化处理操作示例
- 基于tensorflow for循环 while循环案例
- 浅谈Python 命令行参数argparse写入图片路径操作