JavaScript 集合

function Set() {
	var items = {};
	this.has = function(value) {
		return value in items
	}
	this.add = function(value) {
		if (!this.has(value)) {
			items[value] = value;
			return true
		}
		return false
	}
	this.remove = function() {
		if (this.has(value)) {
			delete items[value];
			return true
		}
		return false
	}
	this.size = function() {
		return Object.keys(items).length
	}
	this.values = function() {
		return Object.keys(items)
	}
	this.union = function(otherSet) {
		var unionSet = new Set();
		var values = this.values();
		for (var i = 0; i < values.length; i++) {
			unionSet.add(values[i])
		}
		values = otherSet.values();
		for (var i = 0; i < values.length; i++) {
			unionSet.add(values[i])
		}
		return unionSet
	}
	this.intersection = function(otherSet) {
		var intersection = new Set();
		var values = this.values();
		for (var i = 0; i < values.length; i++) {
			if (otherSet.has(values[i])) {
				intersection.add(values[i])
			}
		}
		return intersection
	}
	this.difference = function(otherSet) {
		var differece = new Set();
		var values = this.values();
		for (var i = 0; i < values.length; i++) {
			if (!otherSet.has(values[i])) {
				differece.add(values[i])
			}
		}
		return differece
	}
	this.subSet = function(otherSet) {
		var subSet = new Set();
		if (this.size() > otherSet.size()) {
			return false
		}
		var values = this.values();
		for (var i = 0; values.length; i++) {
			if (!otherSet.has(values[i])) {
				return false
			}
		}
		return true
	}
}

  

时间: 2024-10-08 10:28:00

JavaScript 集合的相关文章

JavaScript 集合对象

1. 集合对象 1.1 Object 关于Object类型的创建和底层存储原理我在另一篇文章有说明: JavaScript 对象属性底层原理 我们知道了大多数情况下Object底层都是Hash结构,我们再看看V8中从Object派生的继承图 1.2 Array 数组是一种类列表对象,可以存储重复的对象,只能用整数作为数组元素的索引. 在V8中数组继承于Object,数据结构依然是Hash表. //An instance of the built-in array constructor (ECM

javascript集合大全

1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大

javascript集合的交,并,补,子集的操作实现

可能新的ECMA规范里已有了这些的实现, 但能自己从头开始实现,感觉也非常不错的哟... function Set() { var items = {}; this.has = function(value){ return items.hasOwnProperty(value); }; this.add = function(value){ if (!this.has(value)){ items[value] = value; return true; } return false; };

出色的 JavaScript API 设计秘诀

设计是一个很普遍的概念,一般是可以理解为为即将做的某件事先形成一个计划或框架. (牛津英语词典)中,设计是一种将艺术,体系,硬件或者更多的东西编织到一块的主线.软件设计,特别是作为软件设计的次类的API设计,也是一样的.但是API设计常常很少关注软件发展,因为为其他程序员写代码的重要性要次于应用UI设计和最终用户体验. 但是API设计,作为我们自己写的库中提供的公共接口,能够向调用我们代码的开发者表现出我们库的一些特点和功能,所以API设计和UI设计一样重要.事实上,两者都是为应用可以提供更好的

Javascript – 正则表达式

目录 1. 正则表达式 1.1 创建 1.2 RegExp 对象属性 1.3 RegExp 对象方法 1.4 RegExp 分组 2. 元字符和正则表达式规则 1正则表达式 正则表达式本身就是一种语言,由普通字符和特殊的元字符(metacharacters)组成.它描述了字符串的匹配模式,用于转换和处理字符串. 其中,元字符(metacharacters)也是由普通字符组成,具有特殊意义.比如 {3} 代表了将前面的字符或分组重复匹配三次,$ 代表了匹配一行的结束位置.(更多的元字符请看下面的

Ext概述

Ext是一个具有丰富组件的javascript集合类库,除了自身提供的一套选择器.效果.ajax等功能,还提供了大量的javascript创建页面元素的类.方法.这个意味着:只要客户端支持javascript,可以使用ext方便的生成所有页面元素,再不必搞大量的html代码,而且生成的页面的样式还很漂亮.EXT 强大的UI,而且性能不错,这是其最大的优点. 速度快,管是UI还是其它模块. 100%面向对象和组件化的思想,一致的语法,全局的命名空间. 文档的完整,规范,方便. 所有的组件(widg

【翻译】Ext JS——高效的编码风格指南

原文:ExtJS - Efficient coding style guide 作者:Raja 切勿使用"new"关键字:在Ext JS中,使用"new"关键字来创建一个组件或类的实例是一种错误的做法,因为这没有遵循组件的生命周期.应该使用Ext.create方法来创建对象,例如: 错误: var obj = new Ext.panel.Panel(); 正确: var obj = Ext.create('Ext.panel.Panel'); 初始化直接量:不要直接

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

【JavaScript】JavaScript中的陷阱大集合

本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Javascript开发者也可以在本文找到一些有趣的新陷阱,请留意这些陷阱,当然也可以尽情享受由这些陷阱 带来的“乐趣”! AD: 本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Java