javascript实现Map

  1 function Map() {
  2     this.elements = new Array();
  3
  4     // 获取MAP元素个数
  5     this.size = function() {
  6         return this.elements.length;
  7     }
  8
  9     // 判断MAP是否为空
 10     this.isEmpty = function() {
 11         return (this.elements.length < 1);
 12     }
 13
 14     // 删除MAP所有元素
 15     this.clear = function() {
 16         this.elements = new Array();
 17     }
 18
 19     // 向MAP中增加唯一元素(key, value)
 20     this.put = function(_key, _value) {
 21         this.remove(_key);
 22         this.elements.push({
 23                     key : _key,
 24                     value : _value
 25                 });
 26     }
 27
 28     // 向MAP中增加重复元素(key, value)
 29     this.putRepeat = function(_key, _value) {
 30         this.elements.push({
 31                     key : _key,
 32                     value : _value
 33                 });
 34     }
 35
 36     // 删除指定KEY的元素,成功返回True,失败返回False
 37     this.remove = function(_key) {
 38         var bln = false;
 39         try {
 40             for (i = 0; i < this.elements.length; i++) {
 41                 if (this.elements[i].key == _key) {
 42                     this.elements.splice(i, 1);
 43                     return true;
 44                 }
 45             }
 46         } catch (e) {
 47             bln = false;
 48         }
 49         return bln;
 50     }
 51
 52     // 获取指定KEY的元素值VALUE,失败返回NULL
 53     this.get = function(_key) {
 54         try {
 55             var result = null;
 56             for (i = 0; i < this.elements.length; i++) {
 57                 if (this.elements[i].key == _key) {
 58                     result = this.elements[i].value;
 59                 }
 60             }
 61             return result;
 62         } catch (e) {
 63             return null;
 64         }
 65     }
 66
 67     // 设置MAP中指定KEY元素的值VALUE, 失败返回NULL
 68     this.set = function(_key, _value) {
 69         try {
 70             this.remove(_key);
 71             this.put(_key, _value);
 72         } catch (e) {
 73             return null;
 74         }
 75     }
 76
 77     // 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
 78     this.element = function(_index) {
 79         if (_index < 0 || _index >= this.elements.length) {
 80             return null;
 81         }
 82         return this.elements[_index];
 83     }
 84
 85     // 判断MAP中是否含有指定KEY的元素
 86     this.containsKey = function(_key) {
 87         var bln = false;
 88         try {
 89             for (i = 0; i < this.elements.length; i++) {
 90                 if (this.elements[i].key == _key) {
 91                     bln = true;
 92                 }
 93             }
 94         } catch (e) {
 95             bln = false;
 96         }
 97         return bln;
 98     }
 99
100     // 判断MAP中是否含有指定VALUE的元素
101     this.containsValue = function(_value) {
102         var bln = false;
103         try {
104             for (i = 0; i < this.elements.length; i++) {
105                 if (this.elements[i].value == _value) {
106                     bln = true;
107                 }
108             }
109         } catch (e) {
110             bln = false;
111         }
112         return bln;
113     }
114
115     // 获取MAP中所有VALUE的数组(ARRAY)
116     this.values = function() {
117         var arr = new Array();
118         for (i = 0; i < this.elements.length; i++) {
119             arr.push(this.elements[i].value);
120         }
121         return arr;
122     }
123
124     // 获取MAP中所有KEY的数组(ARRAY)
125     this.keys = function() {
126         var arr = new Array();
127         for (i = 0; i < this.elements.length; i++) {
128             arr.push(this.elements[i].key);
129         }
130         return arr;
131     }
132 }
时间: 2024-10-10 11:08:05

javascript实现Map的相关文章

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]);}

用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 <

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,

JavaScript之map与parseInt的陷阱

问题来源 ? 这个问题的来源是学习廖雪峰老师JS教程.问题如下:小明希望利用map()把字符串变成整数,他写的代码很简洁: 'use strict'; var arr = ['1', '2', '3']; var r; r = arr.map(parseInt); console.log(r); // [1, NaN, NaN] 为什么不是[1, 2, 3]?这是因为两个两个函数的定义有冲突.下面详解: map的定义 ? 注意到这个问题的原因是参考了这个国外某博客JavaScript可选参数危险

自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题

由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach, has, containsKey, isEmpty, size 等方法,使用和声明的方试和正常声明Map对象一样: var map = new Map(); 只需将下面代码拷入<script type="text/javascript"></script>中即可

JavaScript Source Map 详解

上周,jQuery 1.9发布. 这是2.0版之前的最后一个新版本,有很多新功能,其中一个就是支持Source Map. 访问 http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js,打开压缩后的版本,滚动到底部,你可以看到最后一行是这样的: //@ sourceMappingURL=jquery.min.map 这就是Source Map.它是一个独立的map文件,与源码在同一个目录下,你可以点击进去,看看它的样子. 这是

(转)JavaScript Source Map 详解

原文链接:http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html 这是2.0版之前的最后一个新版本,有很多新功能,其中一个就是支持Source Map. 访问 http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js,打开压缩后的版本,滚动到底部,你可以看到最后一行是这样的: //@ sourceMappingURL=jquery.min.map 这就

javascript模拟map

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content=

JavaScript中Map和ForEach的区别

译者按: 惯用Haskell的我更爱map. 原文: JavaScript?-?Map vs. ForEach - What's the difference between Map and ForEach in JavaScript? 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法:Array.prototype.map()和Array.prototyp