javascript实现Map结构

//定义map
function Map() {
this.container = {};
}
//将key-value放入map中
Map.prototype.put = function(key, value) {
try {
if (key != null){
this.container[key] = value;
}
} catch (e) {
return e;
}
};

//根据key从map中取出对应的value
Map.prototype.get = function(key,deft) {
if(!this.containsKey(key)){
return deft;
}
try {
return this.container[key];
} catch (e) {
return e;
}
};

//判断map中是否包含指定的key
Map.prototype.containsKey = function(key) {
try {
for ( var p in this.container) {
if (p == key)
return true;
}
return false;

} catch (e) {
return e;
}

}

//判断map中是否包含指定的value
Map.prototype.containsValue = function(value) {
try {
for ( var p in this.container) {
if (this.container[p] === value)
return true;
}
return false;

} catch (e) {
return e;
}
};

//删除map中指定的key
Map.prototype.remove = function(key) {
try {
delete this.container[key];
} catch (e) {
return e;
}
};

//清空map
Map.prototype.clear = function() {
try {
delete this.container;
this.container = {};

} catch (e) {
return e;
}
};

//判断map是否为空
Map.prototype.isEmpty = function() {

if (this.keySet().length == 0)
return true;
else
return false;
};

//获取map的大小
Map.prototype.size = function() {

return this.keySet().length;
}

//返回map中的key值数组
Map.prototype.keySet = function() {
var keys = new Array();
for ( var p in this.container) {
keys.push(p);
}

return keys;
}
//遍历Map
Map.prototype.each = function(fun){
var keys = this.keySet();
for(var i = 0;i < keys.length;i++){
fun(keys[i],this.get(keys[i]));
}
}

//返回map中的values值数组
Map.prototype.values = function() {
var valuesArray = new Array();
var keys = this.keySet();
for (var i = 0; i < keys.length; i++) {
valuesArray.push(this.container[keys[i]]);
}
return valuesArray;
}
//获取Map的最大值,参数为比较函数
Map.prototype.max = function(compare){
var keys = this.keySet();
var maxKey = keys[0],maxValue = this.get(keys[0]);
for(var i = 0;i < keys.length;i++){
if(compare(this.get(keys[i],maxValue))){
maxValue = this.get(keys[i]);
maxKey = keys[i];
}
}
return [maxKey,maxValue];
}

//返回 map 中的 entrySet 对象
Map.prototype.entrySet = function() {
var array = new Array();
var keys = this.keySet();
for (var i = 0; i < keys.length; i++) {
array.push(keys[i],this.container[keys[i]]);
}
return array;
}

原文地址:http://blog.51cto.com/janwool/2061827

时间: 2024-10-07 10:51:27

javascript实现Map结构的相关文章

js-ES6学习笔记-Set结构和Map结构

http://www.cnblogs.com/lonhon/ 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. 2.Set 函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. 3.Set.prototype.size:返回Set实例的成员总数. 四个操作方法. add(value):添加某个值,返回Set结构本身. delete(value):删除某个值,返回一个布尔值,表示删除是否

JavaScript实现Map、Reduce和Filter

1. [代码][JavaScript]代码     <script type="text/javascript">// 函数式编程:// 描述我们要做什么,而不是我们如何去做.这意味着我们工作在一个更高的抽象层次.函数式编程将导致更精巧.清晰和令人愉快的代码. // 最基础的forEachfunction forEach(array, action) {for (var i = 0; i < array.length; i++) {action(array[i]);}

js 实现存储Map 结构的数据

<script type="text/javascript"> 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

用JavaScript写map

<script type="text/javascript"> function Map() { this.elements = new Array(); } //获取MAP元素个数 Map.prototype.size = function() { return this.elements.length; }; //判断MAP是否为空 Map.prototype.isEmpty = function() { return (this.elements.length <

[Go语言]从Docker源码学习Go——if语句和map结构

if语句 继续看docker.go文件的main函数 if reexec.Init() { return } go语言的if不需要像其它语言那样必须加括号,而且,可以在判断以前,增加赋值语句 语法 IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] . 例子 if x := f(); x < y { return x } else i

es6 map结构

Map结构的实例有以下属性和操作方法. (1)size属性 size属性返回Map结构的成员总数. (2)set(key, value) set方法设置key所对应的键值,然后返回整个Map结构.如果key已经有值,则键值会被更新,否则就新生成该键. (3)get(key) get方法读取key对应的键值,如果找不到key,返回undefined. (4)has(key) has方法返回一个布尔值,表示某个键是否在Map数据结构中. (5)delete(key) delete方法删除某个键,返回

ES6笔记(6)-- Set、Map结构和Iterator迭代器

系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iterator 学过C++的人应该知道这是个迭代器对象,拥有一个指针,指向数据结构中的某个成员 JS中的iterator也有类似的功能,JS内部为一些数据结构实现了iterator迭代器的接口,让我们可以方便的使用 var [a, b, ...c] = [1, 2, 3, 4]; c // [3, 4]

JavaScript创建Map对象(转)

JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构. Js代码   /* * MAP对象,实现MAP功能 * * 接口: * size()     获取MAP元素个数 * isEmpty()    判断MAP是否为空 * clear()     删除MAP所有元素 * put(key, value)   向MAP中增加元素(key, value) * remove(key)    删除指定KEY的元素,成功返回True,失败返回False * 

javascript实现map的功能(转载)

/* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * get(key) 获取指定KEY的元素值VALUE,失败返回NULL * element(index) 获取指定索引的元素(使用element.key,