Javascript的Map对象
2016-06-24 09:19
375 查看
前言
最近工作写js,需要传json到后台,虽然本身js的Array也可以是一个HashMap一样,但是还是感觉很麻烦,方法很少,写起来不够爽。就用了十几分钟百度了一下javascript的Map对象。自己再对照Java里面JDK的Map对象拓展了下。不多说,代码如下:
/** * @description JS的Map对象,仿造JDK的Map对象编写 * @autor Nick * @version 1.0 * @Date 2016/06/23 */ function Map() { this.arr = new Array(); /** * @description 构造方法 * @param key Key值 * @param value Value值 */ var struct = function(key, value) { this.key = key; this.value = value; }; /** * @param Map的Key值 * @return 元素的Value值 */ this.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; }; /** * @description 如果Map里面的Key包含传递过来的key,则返回 * @param key * @return Array */ this.getByIndexOf = function(key) { var valus = new Array(); for (var i = 0; i < this.arr.length; i++) { if (this.arr[i].key.indexOf(key) > 0) { valus.push(this.arr[i].value); } } return valus; }; /** * @description 加入元素 * @param key * @param value */ this.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); }; /** * @description 根据key删除某个元素 * @param key */ this.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); } }; /** * @description 大小 * @return Map的长度 */ this.size = function() { return this.arr.length; }; /** * @description 是否为空 * @return 是否为空 */ this.isEmpty = function() { return this.arr.length <= 0; }; /** * @description 得到Map里面的所有key的List * @return Map的所有Key */ this.keys = function() { var keys = new Array(); for(var i = 0; i < this.arr.length; i++) { keys.push(this.arr[i].key); } return keys; }; /** * @description 得到Map里面的所有value的List * @return 所有Values */ this.values = function() { var values = new Array(); for(var i = 0; i < this.arr.length; i++) { values.push(this.arr[i].value); } return values; }; /** * @description 是否包含某个Key * @return 是否为空 */ this.containsKey = function(key) { if(key == null) { return false; } return this.get(key) != null; }; /** * @description 是否包含某个Value * @return 是否包含某个value */ this.containValue = function(value) { if (value == null) { return false; } for(var i = 0; i < this.arr.length; i++) { if(this.arr[i].value == value) { return true; } } return false; }; /** * @description 清空元素 */ this.clear = function() { //注意,此处不能直接arr = null; for (var i = 0; i < this.arr.length; i++) { this.arr[i] = null; } } }
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享