`
cuisuqiang
  • 浏览: 3936790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3651208
社区版块
存档分类
最新评论

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

    博客分类:
  • JS
阅读更多

Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象。

这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容!

 

这里Key,你要使用String类型,和Java一样,你可以进行一些增加,删除,修改,获得的操作。

使用很简单,我先把工具类给大家看下:

/**
 * @version 1.0
 * @author cuisuqiang@163.com
 * 用于实现页面 Map 对象,Key只能是String,对象随意
 */
var Map = function(){
	this._entrys = new Array();
	
    this.put = function(key, value){
        if (key == null || key == undefined) {
            return;
        }
        var index = this._getIndex(key);
        if (index == -1) {
            var entry = new Object();
            entry.key = key;
            entry.value = value;
            this._entrys[this._entrys.length] = entry;
        }else{
            this._entrys[index].value = value;
        }        
    };
    this.get = function(key){
        var index = this._getIndex(key);
        return (index != -1) ? this._entrys[index].value : null;
    };
    this.remove = function(key){
        var index = this._getIndex(key);
        if (index != -1) {
            this._entrys.splice(index, 1);
        }
    };
    this.clear = function(){
        this._entrys.length = 0;;
    };
    this.contains = function(key){
        var index = this._getIndex(key);
        return (index != -1) ? true : false;
    };
    this.getCount = function(){
        return this._entrys.length;
    };
    this.getEntrys =  function(){
        return this._entrys;
    };
   this._getIndex = function(key){
        if (key == null || key == undefined) {
            return -1;
        }
        var _length = this._entrys.length;
        for (var i = 0; i < _length; i++) {
            var entry = this._entrys[i];
            if (entry == null || entry == undefined) {
                continue;
            }
            if (entry.key === key) {//equal
                return i;
            }
        }
        return -1;
    };
}

 

如果你不懂Js中对象的创建等一些基础知识,自己可以网上查一下。

// 自定义Map对象
var map = new Map();
map.put("a","a");
alert(map.get("a"));
map.put("a","b");
alert(map.get("a"));

 

先弹出 a 后面弹出 b ,因为后面的会覆盖前面的!

其他方法大家自己写写看!

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

4
0
分享到:
评论
8 楼 BuN_Ny 2012-09-04  
BuN_Ny 写道
(function(){
  var Map = function(){
    this._data = {};
    //...
  };
  Map.prototype = {
    put: function(key, val){
      this._data[key] = val;
    },
    get: function(key){
      return this._data[key];
    }
  };
})();


直接写的,不知道能不能运行。



不好意思,漏了点东西。。。
(function(W){
  var Map = function(){
    this._data = {};
    //...
  };
  Map.prototype = {
    put: function(key, val){
      this._data[key] = val;
    },
    get: function(key){
      return this._data[key];
    }
  };
  W.Map = Map;
})(window);
7 楼 BuN_Ny 2012-09-04  
(function(){
  var Map = function(){
    this._data = {};
    //...
  };
  Map.prototype = {
    put: function(key, val){
      this._data[key] = val;
    },
    get: function(key){
      return this._data[key];
    }
  };
})();


直接写的,不知道能不能运行。
6 楼 cuisuqiang 2012-06-26  
zhukewen_java 写道
水平确实一般

谢谢批评,JS功底我确实不行
5 楼 zhukewen_java 2012-06-26  
水平确实一般
4 楼 cuisuqiang 2012-06-26  
DDT_123456 写道
 this._getIndex = function(key){  
        if (key == null || key == undefined) {  
            return -1;  
        }  
        var _length = this._entrys.length;  
        for (var i = 0; i < _length; i++) {  
            var entry = this._entrys[i];  
            if (entry == null || entry == undefined) {  
                continue;  
            }  
            if (entry.key === key) {//equal  
                return i;  
            }  
        }  
        return -1;  
    };

你这又是何必呢。
JS对象{}本来就是K-V的你何必用数组呢?不过 JS对象里的关键字你倒是要考虑一下咯。

多谢指点
3 楼 zyhui98 2012-06-25  
用两个数组,一个保存key,一个保存value,两个下标相同,这样效率高点吧。
2 楼 DDT_123456 2012-06-18  
同学把文章改改吧,不要误导新同学咯。
1 楼 DDT_123456 2012-06-18  
 this._getIndex = function(key){  
        if (key == null || key == undefined) {  
            return -1;  
        }  
        var _length = this._entrys.length;  
        for (var i = 0; i < _length; i++) {  
            var entry = this._entrys[i];  
            if (entry == null || entry == undefined) {  
                continue;  
            }  
            if (entry.key === key) {//equal  
                return i;  
            }  
        }  
        return -1;  
    };

你这又是何必呢。
JS对象{}本来就是K-V的你何必用数组呢?不过 JS对象里的关键字你倒是要考虑一下咯。

相关推荐

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

    本文实例讲述了JS自定义对象实现Java中Map对象功能的方法。分享给大家供大家参考。具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象。 这里我创建一...

    javascript实现Java中的Map对象功能的实例详解

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

    自定义javascript的Map类

    自定义javascript的Map类,使用习惯完全依据于java的map使用习惯编写,java中map的用法基本一样,导入包即可使用

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

    以下map.js和map-util.js都是自定义的map,任选其一就可以。你可以用它来像java里new Map()和put()、remove()、get()等方法

    javascript模拟map,set类,用起来挺方便的!!!

    1.可以用null,boolean,string,number,array,Date,自定义类的对象作键值,数组里的元素必须是实现equals方法的类型,而且数组里含有null,undefined,NaN会弹出异常; 2.数组维数尽量不要太多,程序里递归检查数组元素...

    DWR开发包常规客户端服务器端面向对象编程

    客户端调用JAVA自定义反射对象: function getServiceInfo() { TestService.dwrtest('字符串1','字符串2',['数组字符串1','数组字符串2{带&&特殊字符}','数组字符串3{带==特殊字符}'],{"xieyu":"测试键值对"},...

    基于JavaScript的数据可视化实验室后台管理系统源码+项目说明(期末大作业).zip

    @Target:注解用在哪种java元素上, @Retention:注解的生命周期,@Documented),再用自定义方法参数解析器HandlerMethodArgumentResolver取出request header中的user,调用service层方法比较token,返回user对象。...

    Grails权威指南

     2.2.5 列表(list)和映射(map)  2.2.6 expando动态对象  2.2.7 范围(range)  2.3 groovy的高级特性  2.3.1 一切都是对象  2.3.2 元编程(metaprogramming)  2.3.3 生成器(builder...

    响应式web源码java-dojo-bootstrap-map-js:有关如何通过Dojo-bootstrap使用带有Bootstap的Esr

    dojo-bootstrap-map-js 一个应用样板,演示了如何使用 Esri 以及如何使用组件创建响应式地图应用程序。 这个样板非常适合移动应用程序,因为它提供了 Bootstrap 的响应式 UI,而没有加载所有 jQuery 的开销。 此外,...

    JHelper.js

    JHelper 是一个开源的共用JS库,它分层装了类似Java中的List, Map,StringBuffer以及自定义排序等集合,和方便灵活的Validate验证操作

    swing界面设计之JTree

    (十) JAVA swing编程JTree实现系统目录 77 FileTree1.java源代码 77 (十一) Java Swing中的JTree模型 85 Swing.tree包中的主要类名称实现 85 1. 构建树模型 86 2. 树结点 86 树结构详细类图 86 2.1 TreeNode接口 86 ...

    mapapps-lodash:lodash库集成在map.apps中的示例

    注意:这只是一个示例,说明如何通过自定义构建将库集成到map.apps中。 该项目显示了使用和Maven的库的自定义构建。 构建的结果是一个文件mapapps-lodash-&lt;version&gt;.jar ,可以将其上载到map.apps实例中,或由基于的...

    Java学习笔记-个人整理的

    {2.8}框架中移动的小球}{59}{section.2.8} {2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section.2.10} {2.10.1}类的属性}{60}{subsection.2.10.1} {2.10.2}类的方法}{61}{subsection.2.10.2} {...

    亚信java笔试题-study:学习笔记

    亚信java笔试题 study     vue   es6 学习笔记 戏剧性教育 自适应 vue官网地址: vue学习笔记地址: 生命周期 ajax、 vue实例的属性和方法 自定义指令 过度动画 组件 es6学习笔记地址: let const 变量的解构赋值...

    玩转模板--自动代码生成工程

    2.要有java开发的集成环境,本工程没有界面,很多功能都是通过直接注释,或增加一些代码完成. 3.JDK版本必须是1.6以上,否则会报版本错误.当然也可以更换工程依赖的jar,使用一些低版本的jar包 使用说明: 1. 修改数据库...

    jboss as 7 support jsf2.2.1 modules

    #{bean.multipleAttributes}代表一个Map,Object&gt;对象。它的值可以是常量,也可以是表达式。 通过使用Express Language 3(Java EE 7的一部分),多个属性也可以通过EL表达式直接定义。 , "two":2, "three":3}" /...

Global site tag (gtag.js) - Google Analytics