JS自定义 Map
<script>
function HashMap(){this.map = {};}
HashMap.prototype = {
put : function(key, value){ this.map[key] = value;},
get : function(key){
if(this.map.hasOwnProperty(key)){ return this.map[key];}
return null;
},
remove : function(key){
if(this.map.hasOwnProperty(key)){ return delete this.map[key];}
return false;
},
removeAll : function(){this.map = {};},
keySet : function(){
var _keys = [];
for(var i in this.map){
_keys.push(i);
}
return _keys;
}
};
HashMap.prototype.constructor = HashMap;
//排序方法
function compare(val1,val2) {
// 转换为拼音
//val1 = Pinyin.getFullChars(val1).toLowerCase();
//val2 = Pinyin.getFullChars(val2).toLowerCase();
// 获取较长的拼音的长度
var length = val1.length > val2.length ? val1.length:val2.length;
// 依次比较字母的unicode码,相等时返回0,小于时返回-1,大于时返回1
for(var i = 0; i < length; i++ ){
var tmp_val1 = isNaN(val1.charCodeAt(i)) ? 0:val1.charCodeAt(i);
var tmp_val2 = isNaN(val2.charCodeAt(i)) ? 0:val2.charCodeAt(i);
var differ = tmp_val1 - tmp_val2;
//console.log(tmp_val1+" "+tmp_val2);
//console.log(differ);
if(differ == 0) {
continue;
}else {
//if(val1.charAt(i) == '_' ) {
//return -1;
//}
return differ;
}
}
//if(i == length) {
// return val1.length - val2.length;
//}
}
//init map
var hashMap = new HashMap();
//add value
hashMap.put('key111' ,'value1');
hashMap.put('key3' ,'value3');
hashMap.put('key' ,'value2');
hashMap.put('aa' ,'value2');
hashMap.put('bbbbbb' ,'value2');
var hash_keyset = hashMap.keySet();
for(var i=0; i<hash_keyset.length; i++){
var key = hash_keyset.sort(compare)[i];//key排序
//var key = hash_keyset[i];//不排序
//alert(key+" "+hashMap.get(key));
console.log(key+" "+hashMap.get(key));
}
</script>
出处附录:
https://www.cnblogs.com/songfei90/p/10523229.html
JS自定义 Map的更多相关文章
- js 自定义map
<script> function HashMap(){this.map = {};} HashMap.prototype = { put : function(key, value){ ...
- ACE.js自定义提示实现方法
ACE.js自定义提示实现方法 时间 2015-11-19 00:55:22 wsztrush's blog 原文 http://wsztrush.github.io/编程技术/2015/11/0 ...
- javascript 自定义Map
迁移时间:2017年5月25日08:24:19 Author:Marydon 三.自定义Map数据格式 需特别注意的是: js中没有像java中的Map数据格式,js自带的map()方法用于:返回 ...
- js自定义验证码
分享一个js自定义的验证码 window.onload = function () { var code; $('.changePassword').click(function () ...
- js自定义弹出框
js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...
- 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图
超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码 <div class="htmleaf-container"> <div ...
- 与你相遇好幸运,Sails.js自定义responses
在 /api/responses/ 新建文件 >serviceDBError.js 自定义的数据库错误 >serviceError.js 自定义的数据错误 >serviceSucc ...
- js模拟Map对象,实现key---value
js模拟Map对象,实现key---value 根据java中map的属性,实现key----value保存 function Map() { var struct = function (key, ...
- jquery.validate.js默认配置,jquery.validate.js自定义提示信息
jquery.validate.js默认配置,jquery.validate.js自定义提示信息 配置jQuery.validator默认的处理方法 >>>>>>& ...
随机推荐
- MDX入门(2)
MDX语言对大小写不敏感,而对于查询轴来说简单有Columns,Rows,Pages,Chapters,Sections分别也可以用AXIS(0),AXIS(1),AXIS(2),AXIS(3),AX ...
- c++调用c#代码
// ConsoleApplication1.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include "pch.h" ...
- 编程字体Source Code Pro 免费下载
对于程序员来说,好的字体应该满足的基本条件: 字母和数字易于分辨,如: 英文字母o 和 阿拉伯数字 0 ,或者 英文字母 l 和 阿拉伯数字 1 ,两个单引号 '' 和双引号 ”. 字体等宽,保持对齐 ...
- 【ABAP系列】SAP 业务界面同时显示KEY和文本
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 业务界面同时显示KEY和 ...
- python3.5+django2.0快速入门(一)
因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...
- 【sql server复制】不重新初始化快照的情况下新增表/存储过程/函数等
转发自:https://www.cnblogs.com/datazhang/p/5498789.html sqlserver同步后在不重新初始化快照的情况下新增表 在已有事务复制中,时长 ...
- SpringBoot(四) -- SpringBoot与Web开发
一.发开前准备 1.创建一个SpringBoot应用,引入我们需要的模块 2.SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置,就能运行起来 3.编写业务代码 二.静态资 ...
- C# TCPListener
1: 有两个地方必须做异常处理,异常类型为IOException 服务器读客户端发来的信息时: LeafTCPClient client = (LeafTCPClient)ar.AsyncState; ...
- hdu-1281.棋盘游戏(二分图匹配 + 二分图关键点查询)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Java使用POI读取和写入Excel指南(转)
做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里基于最新的Apache POI 4.0 ...