js 模拟Map类

原创 2013年12月04日 10:15:47

根据java中map的属性,实现key----value保存

1、使用数组方式存储数据,(使用闭包)

function Map() {
	var struct = function (key, value) {
		this.key = key;
		this.value = value;
	}

	var put = function (key, value) {
		for (var i = 0; i < this.arr.length; i++) {
			if (this.arr[i].key === key) {
				this.arr[i].value = value;
				return;
			}
		}
		this.arr[this.arr.length] = new struct(key, value);
	}

	var get = function (key) {
		for (var i = 0; i < this.arr.length; i++) {
			if (this.arr[i].key === key) {
				return this.arr[i].value;
			}
		}
		return null;
	}

	var remove = function (key) {
		var v;
		for (var i = 0; i < this.arr.length; i++) {
			v = this.arr.pop();
			if (v.key === key) {
				continue;
			}
			this.arr.unshift(v);
		}
	}

	var size = function () {
		return this.arr.length;
	}

	var isEmpty = function () {
		return this.arr.length <= 0;
	}
	this.arr = new Array();
	this.get = get;
	this.put = put;
	this.remove = remove;
	this.size = size;
	this.isEmpty = isEmpty;
}

 

 2、使用JSON方式存储数据(使用原型方式拓展方法)

function Map() {
	this.obj = {};
	this.count = 0;
}

Map.prototype.put = function (key, value) {
	var oldValue = this.obj[key];
	if (oldValue == undefined) {
		this.count++;
	}
	this.obj[key] = value;
}

Map.prototype.get = function (key) {
	return this.obj[key];
}

Map.prototype.remove = function (key) {
	var oldValue = this.obj[key];
	if (oldValue != undefined) {
		this.count--;
		delete this.obj[key];
	}
}

Map.prototype.size = function () {
	return this.count;
}

var map = new Map();
map.put("key","map");
map.put("key","map1");
alert(map.get("key"));//map1
map.remove("key");
alert(map.get("key"));//undefined

 

JS模拟的Map类实现方法

这篇文章主要介绍了JS模拟的Map类实现方法,可实现模拟java中map属性按照键值对保存的功能,提供了采用数组和json两种实现方式,需要的朋友可以参考下 本文实例讲述了JS模拟的Map类。分...

使用JS模拟出Map对象

最近要做的一个项目,支持方提供的一个Map方法,用着相当可以

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!...

js学习之javascript引用类型object--练习模拟Map和数组去重

一.模拟map function Map(){ //创建一个空对象 var obj = {}; // put 方法存值 this.put = function(key,value){...

使用JS模拟Map容器

1、前言自己对JS的了解也不是很深入。最近看了一个视频,讲述JS的深入用法,感觉很有意思,就选择里面的一个小Demo(模拟Map容器)来体会一下JS的强大之处。 2、思想主要使用JS中对象的特殊性,使...

js操作map类UtilMap

  • 2013年03月30日 10:14
  • 1KB
  • 下载

JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型。 ES6引入了iter...

JS自定义一个Map类

例子1 //定义简单Map function getMap() {//初始化map_,给map_对象增加方法,使map_像Map            var map_ = new Obj...

模拟ATL建立Auto Object Map

  • 2009年02月11日 18:17
  • 5KB
  • 下载

js 模拟实现php类中的静态变量

js是弱类型语言,而且对面向对象编程支持度不够高,它没有命名空间也没有类,但是可以间接的实现类的部分功能,今天就来鲁一鲁js实现类中的静态变量: 静态变量:简单的理解就是每个类的实例所共享的,一个实...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js 模拟Map类
举报原因:
原因补充:

(最多只允许输入30个字)