`
annan211
  • 浏览: 462977 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

js 自定义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,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) {
		 var flag = true;
		for (i = 0; i < this.elements.length; i++) {
                 if (this.elements[i].key == _key) {
                     flag = false;
                 }
         }
		 if(flag){
				this.elements.push( {
				 key : _key,
				 value : _value
			 });
		 }
     };
 
     //删除指定KEY的元素,成功返回True,失败返回False
     this.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,失败返回False
     this.removeByValue = function(_value) {//removeByValueAndKey
         var 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,失败返回False
     this.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,失败返回NULL
     this.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),失败返回NULL
     this.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通过value
     this.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;
     };
 }


分享到:
评论

相关推荐

    js自定义map集合

    由于原本把需要的数据存放到cookie中,但是cookie不能的key不能自动转译中文,出现乱码,后台服务器报错:Control character in cookie value or attribute.所以改为自定义map集合

    Javascript 中类似Map集合的实现键值对

    **Map集合的特性** 1. **键值对存储**:`Map`允许存储任意类型的键值对,包括对象、基本类型、甚至其他`Map`实例。 2. **键的唯一性**:在`Map`中,每个键都是唯一的,不会像对象那样因同名属性覆盖问题。 3. **...

    Javacript中自定义的map.js 的方法

    在JavaScript中,Map是一种对象类型,用于存储键值对集合。然而,在早期的...对于学习如何在JavaScript中操作和管理数据集,了解这样的自定义Map实现可以增强开发者的能力,并且可以用来构建更复杂的数据结构。

    JavaScript实现Array(数组)和Map

    `object.js` 文件可能涉及到的是JavaScript对象的操作,虽然不是直接与Array或Map相关,但它们在JavaScript中是重要的数据结构。JavaScript对象是一种键值对的集合,键通常是字符串,但也可以是符号(Symbol)。与...

    JS自定义对象实现Java中Map对象功能的方法

    Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象。 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容!   ...

    Javascript实现的Map集合工具类完整实例

    这篇文档详细介绍了如何使用JavaScript实现一个自定义的Map集合工具类,包括构造函数、各种操作方法,如查找、删除、判断等,并提供了具体的代码示例。下面将详细解释这些知识点。 首先,定义了构造函数`varMap`,...

    js仿java的map对象

    在JavaScript中,尽管原生没有提供与Java完全相同的Map对象,但可以通过自定义对象或使用ES6提供的Map数据结构来实现类似的功能。本篇将详细探讨如何在JavaScript中模仿Java的Map对象,以及ES6 Map的数据结构和用法...

    对Map的key和value进行排序

    Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足特定的业务需求。 对Map中的key进行排序 对Map中的key进行排序可以使用TreeMap来实现...

    js模仿java的Map集合详解

    在JavaScript中,尽管原生没有提供与Java完全相同的Map集合,但可以通过自定义对象来模拟实现Map的功能。这里我们将详细探讨如何用JavaScript模仿Java的Map集合,并了解其基本操作。 首先,我们需要创建一个名为`...

    jQuery的Ajax实现异步传输List、Map

    在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下与服务器进行数据交换,极大地提升...

    map转化为list

    2. `BeanUtils.java`: 这可能是自定义的工具类,用于Java Bean对象的操作,可能包含了转换Map到List的实用方法。 3. `TbPowerGroupBeanServiceImpl.java`: 这可能是服务层实现类,处理业务逻辑,可能调用了`...

    scripts_modules:这是javascript自定义函数的集合

    "scripts_modules"是一个专为JavaScript自定义函数集合命名的目录或文件,通常用来组织和管理项目中的各种功能模块。在这个集合中,开发者会将具有特定功能的代码段封装成独立的函数,以便于复用和维护。 在...

    openlayers中自定义工具条

    在OpenLayers这个强大的开源JavaScript库中,自定义工具条是一个常用功能,允许用户根据项目需求构建个性化的交互界面。OpenLayers主要用于创建交互式的地图应用,而工具条则为用户提供了一系列操作地图的功能按钮,...

    javascript常用函数集合

    14. **函数式编程**:高阶函数(如`map()`, `filter()`, `reduce()`)和函数组合是JavaScript中实现函数式编程的关键。 15. **错误处理**:`try...catch`结构用于捕获和处理运行时错误,`throw`语句用于抛出自定义...

    element vue Array数组和Map对象的添加与删除操作

    在Vue.js框架中,Array数组和Map对象是经常用来存储数据的两种结构,尤其是在处理动态数据集合时。Element UI是基于Vue 2.0开发的一套基于Vue的组件库,提供了丰富的界面组件。在后台管理系统的开发中,经常需要动态...

    AMap2DDemo:高度地图Demo 高德地图自定义Marker、自定义Window

    在AMap2DDemo中,开发者将利用Java的面向对象特性、异常处理、集合类等来组织代码,实现地图功能的交互和数据管理。 4. Android SDK集成: 高德地图SDK需要集成到Android工程中才能使用。这涉及到在项目的build....

    json 转换为map

    在Java中,`java.util.Map`接口是键值对的集合,其中每个键都是唯一的。Gson库提供了一个`Gson.fromJson()`方法,能够将JSON字符串解析成一个Map对象。这个过程涉及以下几个步骤: 1. **创建Gson对象**:首先,我们...

    Javascript实现和操作HashMap

    虽然JavaScript原生的`Map`对象提供了类似的功能,但在某些场景下,开发者可能需要自定义HashMap来满足特定的需求,例如优化性能或者实现特定的算法。本篇文章将深入探讨如何在JavaScript中实现HashMap以及如何进行...

    JavaScript 基本语法 高级语法 自定义函数下载

    这个资源包涵盖了JavaScript的基本语法、高级语法以及自定义函数的使用,对于学习和提升JavaScript技能非常有帮助。 **一、JavaScript基本语法** 1. **变量声明**:在JavaScript中,我们可以使用`var`、`let`或`...

    对象转换成JSON和Map

    "对象转换成JSON和Map"是一个核心话题,特别是在Java编程语言中,因为JSON(JavaScript Object Notation)是网络通信中广泛使用的轻量级数据交换格式,而Map则是一种通用的数据结构,用于存储键值对。下面我们将深入...

Global site tag (gtag.js) - Google Analytics