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默认的处理方法 >>>>>>& ...
随机推荐
- mysqlbinlog读懂binlog
binlog 报unknown variable 'default-character-set=utf8' 方法1: 在/etc/my.cnf 中将default-character-set=utf8 ...
- Django中间件添加白名单
一定记得配置 补充一点中间件是工作流程 中间件的详细流程 补充一点需求:在不用中间件的情况和下用装饰器做登陆的阻挡 在django中有自带的 登陆闭包函数只需要引出来就可以直接用了下面是步骤 在se ...
- SQL Server创建链接服务器
1.通过sql语句创建链接服务器,数据是sql server的 EXEC sp_addlinkedserver @server='test', --链接服务器别名,自定义 @srvproduct='' ...
- 如何利用EDM邮件营销进行持续推销
一般来说,一个电子商务网站的转化率在2%左右是正常的.这也意味着其他98%的潜在客户并不会购买任何东西,并且可能再也不回来了.这个时候,如何利用EDM邮件营销进行持续推销呢? 首先,EDM邮件营销可以 ...
- 初窥AST
一个简单的AST示例: AST结构: 里面有program.name.loc.type.comments.tokens 先看program: 重点关注program里面的body这个数组: JS引擎中 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第2节 匿名对象_6-匿名对象的说明
没有名字的对象,叫做匿名对象 新建一个Person类 把赵又廷赋值交给匿名对象Person里面的成员变量name 想调用里面的ShowName的话 还需要再定义一个匿名对象. 第三个对象是一个全新的. ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_7_字符串的转换相关方法
sequence n.顺序:次序:一系列:一连串 v.按顺序排列:测定(整套基因或分子成分的)序列 网络连续:数列:时序 butes.fori出循环 replace Ctrl+字母N也可以打开 输入s ...
- Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示 ...
- Newtonsoft.Json源码中的C#预处理指令
cs文件中包含以指令: #if !(NET35 || NET20 || PORTABLE40) 记事本打开[Newtonsoft.Json.Net20.csproj]可看到以下代码: <Defi ...
- tomcat 端口8080占用问题
启动tomcat时,有时会出现8080端口占用的问题. 解决方法: 终端:ps -e | grep tomcat 会看到下边的结果 途中标记的是进程号,kill掉即可. kill -9 9734(97 ...