1. <script>
  2. function HashMap(){this.map = {};}
  3. HashMap.prototype = {
  4. put : function(key, value){ this.map[key] = value;},
  5. get : function(key){
  6. if(this.map.hasOwnProperty(key)){ return this.map[key];}
  7. return null;
  8. },
  9. remove : function(key){
  10. if(this.map.hasOwnProperty(key)){ return delete this.map[key];}
  11. return false;
  12. },
  13. removeAll : function(){this.map = {};},
  14. keySet : function(){
  15. var _keys = [];
  16. for(var i in this.map){
  17. _keys.push(i);
  18. }
  19. return _keys;
  20. }
  21. };
  22.  
  23. HashMap.prototype.constructor = HashMap;
  24.  
  25. //排序方法
  26. function compare(val1,val2) {
  27. // 转换为拼音
  28. //val1 = Pinyin.getFullChars(val1).toLowerCase();
  29. //val2 = Pinyin.getFullChars(val2).toLowerCase();
  30.  
  31. // 获取较长的拼音的长度
  32. var length = val1.length > val2.length ? val1.length:val2.length;
  33.  
  34. // 依次比较字母的unicode码,相等时返回0,小于时返回-1,大于时返回1
  35. for(var i = 0; i < length; i++ ){
  36. var tmp_val1 = isNaN(val1.charCodeAt(i)) ? 0:val1.charCodeAt(i);
  37. var tmp_val2 = isNaN(val2.charCodeAt(i)) ? 0:val2.charCodeAt(i);
  38. var differ = tmp_val1 - tmp_val2;
  39. //console.log(tmp_val1+" "+tmp_val2);
  40. //console.log(differ);
  41. if(differ == 0) {
  42. continue;
  43. }else {
  44. //if(val1.charAt(i) == '_' ) {
  45. //return -1;
  46. //}
  47. return differ;
  48. }
  49. }
  50. //if(i == length) {
  51. // return val1.length - val2.length;
  52. //}
  53. }
  54. //init map
  55. var hashMap = new HashMap();
  56. //add value
  57. hashMap.put('key111' ,'value1');
  58. hashMap.put('key3' ,'value3');
  59. hashMap.put('key' ,'value2');
  60. hashMap.put('aa' ,'value2');
  61. hashMap.put('bbbbbb' ,'value2');
  62.  
  63. var hash_keyset = hashMap.keySet();
  64. for(var i=0; i<hash_keyset.length; i++){
  65.  
  66. var key = hash_keyset.sort(compare)[i];//key排序
  67. //var key = hash_keyset[i];//不排序
  68. //alert(key+" "+hashMap.get(key));
  69. console.log(key+" "+hashMap.get(key));
  70.  
  71. }
  72. </script>

js 自定义map的更多相关文章

  1. JS自定义 Map

    <script>function HashMap(){this.map = {};}HashMap.prototype = { put : function(key, value){ th ...

  2. ACE.js自定义提示实现方法

    ACE.js自定义提示实现方法 时间 2015-11-19 00:55:22  wsztrush's blog 原文  http://wsztrush.github.io/编程技术/2015/11/0 ...

  3. javascript 自定义Map

      迁移时间:2017年5月25日08:24:19 Author:Marydon 三.自定义Map数据格式 需特别注意的是: js中没有像java中的Map数据格式,js自带的map()方法用于:返回 ...

  4. js自定义验证码

    分享一个js自定义的验证码 window.onload = function () {     var code;     $('.changePassword').click(function () ...

  5. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  6. 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图

    超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码 <div class="htmleaf-container"> <div ...

  7. 与你相遇好幸运,Sails.js自定义responses

    在 /api/responses/ 新建文件 >serviceDBError.js 自定义的数据库错误 >serviceError.js  自定义的数据错误 >serviceSucc ...

  8. js模拟Map对象,实现key---value

    js模拟Map对象,实现key---value 根据java中map的属性,实现key----value保存 function Map() { var struct = function (key, ...

  9. jquery.validate.js默认配置,jquery.validate.js自定义提示信息

    jquery.validate.js默认配置,jquery.validate.js自定义提示信息 配置jQuery.validator默认的处理方法 >>>>>>& ...

随机推荐

  1. Docker 里面新建mysql 容器

    1.获取MySQL镜像, a.直接从docker hub 下载docker镜像 docker pull +镜像名称 b.从别的项目上把镜像export出来 dockr load  i + 镜像的TAR ...

  2. php用户签到,领取红包

    <?php /** * create by jxkshu * Date 2017-09-28 * 用户签到领取红包 */ /** Redis set: key signed:user:mark ...

  3. MySQL-创建测试数据

    简单的方法(每次增加一倍): insert into tb_user(f_id, f_username) select rand(), f_username from tb_user

  4. 云计算openstack共享组件——Memcache 缓存系统

    一.缓存系统 静态web页面: 1.工作流程: 在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Reques ...

  5. apicloud地图、即时通讯、人脸识别登录、以及平时踩过得坑

    apicloud技术浅谈 导语 apicloud 的学习也有一段时间了,这是我个人的一些经验,和踩过的坑,希望对大家能有一些帮助. apicloud的知识准备 apicloud 是一个用原生的思想搭建 ...

  6. 有趣的linux指令

    1.cmatrix sudo apt-get update sudo apt-get install cmatrix 2.asciiquarium wget http://search.cpan.or ...

  7. python网络编程中互斥锁与进程之间的通信

    一.互斥锁 进程之间数据隔离,但是共享一套文件系统,因而可以通过文件来实现进程直接的通信,但问题是必须自己加锁处理. 注意:加锁的目的是为了保证多个进程修改同一块数据时,同一时间只能有一个修改,即串行 ...

  8. MySql-第七篇单表查询

    1.MySQL中可以使用+.-.*./. 1>但MySQL中没有提供字符串连接运算符,可以使用concat(a_str,'xxx')进行连接. 2>在算术表达式中使用null,将会导致整个 ...

  9. [LOJ3123] CTSC2019重复

    Description 给定一个⻓为 n 的字符串 s , 问有多少个⻓为 m 的字符串 t 满足: 将 t 无限重复后,可以从中截出一个⻓度为 n 且字典序比 s 小的串. m ≤ 2000 n ≤ ...

  10. Python入门习题9.数码管时间

    #七段数码管.py import turtle,datetime def drawGap(): #绘制数码管间隔 turtle.penup() turtle.fd(5) def drawLine(dr ...