/** 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,element.value获取KEY和VALUE),失败返回NULL* containsKey(key)  判断MAP中是否含有指定KEY的元素* containsValue(value) 判断MAP中是否含有指定VALUE的元素* values()    获取MAP中所有VALUE的数组(ARRAY)* keys()     获取MAP中所有KEY的数组(ARRAY)** 例子:* var map = new Map();** map.put("key", "value");* var val = map.get("key")* ……**/function Map() {this.elements = new Array();//获取MAP元素个数this.size = function() {return this.elements.length;};//判断MAP是否为空this.isEmpty = function() {return (this.elements.length < 1);};//删除MAP所有元素this.clear = function() {this.elements = new Array();};//向MAP中增加元素(key, value) this.put = function(_key, _value) {this.elements.push( {key : _key,value : _value});};//删除指定KEY的元素,成功返回True,失败返回Falsethis.removeByKey = function(_key) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {this.elements.splice(i, 1);return true;}}} catch (e) {bln = false;}return bln;};//删除指定VALUE的元素,成功返回True,失败返回Falsethis.removeByValue = function(_value) {//removeByValueAndKeyvar bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value) {this.elements.splice(i, 1);return true;}}} catch (e) {bln = false;}return bln;};//删除指定VALUE的元素,成功返回True,失败返回Falsethis.removeByValueAndKey = function(_key,_value) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value && this.elements[i].key == _key) {this.elements.splice(i, 1);return true;}}} catch (e) {bln = false;}return bln;};//获取指定KEY的元素值VALUE,失败返回NULLthis.get = function(_key) {try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {return this.elements[i].value;}}} catch (e) {return false;}return false;};//获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULLthis.element = function(_index) {if (_index < 0 || _index >= this.elements.length) {return null;}return this.elements[_index];};//判断MAP中是否含有指定KEY的元素this.containsKey = function(_key) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {bln = true;}}} catch (e) {bln = false;}return bln;};//判断MAP中是否含有指定VALUE的元素this.containsValue = function(_value) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value) {bln = true;}}} catch (e) {bln = false;}return bln;};//判断MAP中是否含有指定VALUE的元素this.containsObj = function(_key,_value) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value && this.elements[i].key == _key) {bln = true;}}} catch (e) {bln = false;}return bln;};//获取MAP中所有VALUE的数组(ARRAY)this.values = function() {var arr = new Array();for (i = 0; i < this.elements.length; i++) {arr.push(this.elements[i].value);}return arr;};//获取MAP中所有VALUE的数组(ARRAY)this.valuesByKey = function(_key) {var arr = new Array();for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {arr.push(this.elements[i].value);}}return arr;};//获取MAP中所有KEY的数组(ARRAY)this.keys = function() {var arr = new Array();for (i = 0; i < this.elements.length; i++) {arr.push(this.elements[i].key);}return arr;};//获取key通过valuethis.keysByValue = function(_value) {var arr = new Array();for (i = 0; i < this.elements.length; i++) {if(_value == this.elements[i].value){arr.push(this.elements[i].key);}}return arr;};//获取MAP中所有KEY的数组(ARRAY)this.keysRemoveDuplicate = function() {var arr = new Array();for (i = 0; i < this.elements.length; i++) {var flag = true;for(var j=0;j<arr.length;j++){if(arr[j] == this.elements[i].key){flag = false;break;} }if(flag){arr.push(this.elements[i].key);}}return arr;};}

转载于:https://www.cnblogs.com/RanNing/p/3161787.html

JS Map 简单实现相关推荐

  1. 小手一敲,让JS Map现原形

    一.前言 文章主要讲JS Map对象的用法和如何手写Map,非常适合初步学习了JS的同学,适当的学会手写JS源码的技能,对JS理解和面试都有很大的帮助.大多数人都知道Map方法的使用,但是在网上对Ma ...

  2. Vue 使用three.js实现简单全景图

    Vue 使用three.js实现简单全景图 安装 cnpm install three -S 全景页面引用 import * as Three from 'three' html模块 <temp ...

  3. ArcGis js api 简单绘制点线面

    Arcgsi js api 简单绘制点线面 <!DOCTYPE html> <html><head><meta http-equiv="Conten ...

  4. 游戏开发:js实现简单的板球游戏

    js实现简单的板球游戏 大家好,本次我们来使用js来实现一个简单的板球游戏.截图如下: 首先,设计页面代码,页面代码很简单,因为整个几乎是使用js编写的,页面几乎没有代码,如下: <!DOCTY ...

  5. js html css淘宝足迹日历效果,js实现简单的日历显示效果函数示例

    本文实例讲述了js实现简单的日历显示效果函数.分享给大家供大家参考,具体如下: 用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格 ...

  6. js.map error

    1. 问题:  1.1 通过bower install 的components 许多在运行的时候报404无法找到js.map文件, 如图: 2. 分析: 2.1 查看jQuery源码 /dist/jq ...

  7. js实现简单的循环打字效果(思路分享)

    1.初始化"打字创建"属性 代码类似于这样: <div id="demo"></div> <script>var typin ...

  8. php简单网页制作代码,用HTML和CSS以及JS制作简单的网页菜单界面的代码

    这篇文章主要介绍了使用HTML+CSS+JS制作简单的网页菜单界面,这个ABROAD项目所使用的JavaScript部分代码非常简单,需要的朋友可以参考下 写ABROAD项目用到了标签这个东东,其实标 ...

  9. JS函数简单的底层原理 -变量重复声明无效,隐式申明,变量提升,函数提升,以及堆栈内存的变化

    JS函数简单的底层原理 (个人理解): 1. 已经使用var申明且赋值,若再次申明,则第二次申明(不赋值)无效. 2.在同一个作用域下,只要是发生了同名,且变量完成赋值,后者会覆盖前者.存在两个相同的 ...

最新文章

  1. ldconcig详解
  2. Eigen矩阵运算的混淆问题
  3. Java 里的 for (;;) 与 while (true),哪个更快?
  4. BZOJ 3626: [LNOI2014]LCA
  5. 计算力即生产力,智算中心就是智慧时代的“发电厂” | MEET2021
  6. 关于python的一些好的书籍推荐-推荐几本关于的Python好书
  7. eclipse中启动tomcat,不能访问localhost解决办法
  8. API网关如何实现对服务下线实时感知
  9. 【汇编语言】理解8086CPU中,不同类型的寄存器和汇编指令规则的联系(会继续更新)
  10. 决策树留一法python代码_ScikitLearn决策树算法类库使用小结
  11. 【HDOJ5542】The Battle of Chibi
  12. c语言中关系运算符和逻辑运算符,c语言中的关系运算符和逻辑运算符
  13. python将xls格式转成xlsx格式
  14. [涛思数据库taosdata学习打卡系列]-001安装
  15. R语言中的函数5:purrr:map()
  16. Python练习小程序 定时关机小脚本
  17. 15道HTML5基础面试题(附答案)
  18. 思科、华为、华三模拟器大比拼,你最爱哪一款?(附模拟器下载)
  19. Python有证书吗?python证书是什么级别的呢?怎么才能达到python证书的考试条件呢?
  20. 成像质量、像素个数、感光元件尺寸的关系

热门文章

  1. 网站的次导航是什么?对网站优化有什么好处?
  2. 以营销型网站为例,网站建设过程中需要注意哪些问题?
  3. 贝叶斯软件genle教程_手把手教你用R的gemtc包对生存数据进行贝叶斯网状Meta分析...
  4. ajax存到php变量,Ajax返回值作为PHP变量
  5. mybatis 分页需要的jar包下载_064、MyBatis
  6. c语言1066字符分类统计,C语言字符串操作总结大全(超详细)
  7. 求助matlab分解质因数,Matlab
  8. 家卫士扫地机器人好吗_扫地机器人哪个牌子好,家居达人教你选购优质扫地机器人...
  9. 计算机音乐数字乐谱核爆神曲,原神乐谱核爆神曲
  10. java按行读取txt文件内容_对txt文件中的内容进行排序