文档章节

JS实现的HashMap功能

孟飞阳
 孟飞阳
发布于 2016/06/14 15:41
字数 313
阅读 173
收藏 0
/**
* *********  操作实例  **************
*    var map = new HashMap();
*    map.put("key1","Value1");
*    map.put("key2","Value2");
*    map.put("key3","Value3");
*    map.put("key4","Value4");
*    map.put("key5","Value5");
*    alert("size:"+map.size()+" key1:"+map.get("key1"));
*    map.remove("key1");
*    map.put("key3","newValue");
*    var values = map.values();
*    for(var i in values){
*        document.write(i+":"+values[i]+"   ");
*    }
*    document.write("<br>");
*    var keySet = map.keySet();
*    for(var i in keySet){
*        document.write(i+":"+keySet[i]+"  ");
*    }
*    alert(map.isEmpty());
*/

function HashMap(){
    //定义长度
    var length = 0;
    //创建一个对象
    var obj = new Object();

    /**
    * 判断Map是否为空
    */
    this.isEmpty = function(){
        return length == 0;
    };

    /**
    * 判断对象中是否包含给定Key
    */
    this.containsKey=function(key){
        return (key in obj);
    };

    /**
    * 判断对象中是否包含给定的Value
    */
    this.containsValue=function(value){
        for(var key in obj){
            if(obj[key] == value){
                return true;
            }
        }
        return false;
    };

    /**
    *向map中添加数据
    */
    this.put=function(key,value){
        if(!this.containsKey(key)){
            length++;
        }
        obj[key] = value;
    };

    /**
    * 根据给定的Key获得Value
    */
    this.get=function(key){
        return this.containsKey(key)?obj[key]:null;
    };

    /**
    * 根据给定的Key删除一个值
    */
    this.remove=function(key){
        if(this.containsKey(key)&&(delete obj[key])){
            length--;
        }
    };

    /**
    * 获得Map中的所有Value
    */
    this.values=function(){
        var _values= new Array();
        for(var key in obj){
            _values.push(obj[key]);
        }
        return _values;
    };

    /**
    * 获得Map中的所有Key
    */
    this.keySet=function(){
        var _keys = new Array();
        for(var key in obj){
            _keys.push(key);
        }
        return _keys;
    };
    /**
    * 获得Map中的Key进行排序
    */
        this.keySort=function(sortType){
          return this.keySet().sort(function(v1,v2){
            let cal = v1-v2;
            let res = cal==0?0:cal>0?1:-1;
            return sortType==="asc"?res:-res;//默认降序
          });
        }
    /**
    * 获得Map的长度
    */
    this.size = function(){
        return length;
    };

    /**
    * 清空Map
    */
    this.clear = function(){
        length = 0;
        obj = new Object();
    };
}

 

© 著作权归作者所有

共有 人打赏支持
孟飞阳
粉丝 205
博文 964
码字总数 543203
作品 5
朝阳
个人站长
用JavaScript实现JavaScript文件的版本管理和加载

受《大公司怎样开发和部署前端代码?》这篇文章的启发,结合自己的项目实践,创建了一套JavaScript文件的版本管理和加载的机制,虽然比较粗糙,但是解决了不少实际的问题。 使用到的主要工具...

zero2hero
2015/04/14
0
0
Java_脚本引擎_01_用法入门

一、前言 最近有个需求,需要在js中调用java,这样能避免更新java,从而实现代码的热更新。 于是想到用 Nashorn JavaScript 引擎。 二、概述 通过 JDK 8 的 Nashorn JavaScript 引擎 ,可以很...

shirayner
08/01
0
0
JavaScript 中的继承:ES3、ES5 和 ES6

选择一种继承方式 JavaScript 是一门动态语言,动态意味着高灵活性,而这尤其可以体现在继承上面。JavaScript 中的继承有很多种实现方式,可以分成下面四类: Mixin 模式,即属性混入,从一个...

天方夜
07/04
0
0
Cordova(PhoneGap)体系结构(Android)

作者:tonyley 出处:http://my.oschina.net/tonywolf/blog 转载请注明出处 说明: 本文档只争对Cordova(PhoneGap)的Android端,基于Cordova2.1.0版本。 一.总体结构 Cordova的目标是用HTM...

tonyley
2012/10/12
0
0
iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge

iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge 转载:原地址 https://www.jianshu.com/p/e951af9e5e74 上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现......

法斗斗
05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 识别慢性能的宏

Page Profiling 给你了有关页面在载入的时候操作缓慢的邪教,你可以将下面的内容添加到调试(debug)级别: Version 3.1 及其后续版本 设置包名字为 com.atlassian.renderer.v2.components.M...

honeymose
8分钟前
0
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
23分钟前
0
0
maven的pom.xml用解决版本问题

maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
47分钟前
1
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
40
9

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部