可以依据js对象中key是永远不会重复的原则,来模拟Map类型以及去除数组重复项。

1、模拟Map类型

(1)构造Map对象

function Map(){
//private
var obj = {}; // 空的对象容器,存放键值对 //put方法
this.put = function (key,value){
obj[key] = value;
}
//get方法
this.get = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
return obj[key];
}else{
return null;
}
}
//remove方法
this.remove = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
delete obj[key];
}
}
//size方法
this.size = function(){
var count= 0;
for(var arr in obj){
count++;
}
return count;
}
//遍历方法,采用回调函数的方式
this.eachMap = function(fn){
for(var arr in obj){
fn(arr,obj[arr]);
}
}
}

(2)测试代码

//模拟java里的Map类型//函数也是一种对象,可以使用new的方式建立函数实例
var m = new Map();
m.put('01','sscs');
alert(m.size());
alert(m.get('01'));
m.remove('01'); //遍历对象元素,传入的参数是一个函数
m.eachMap(function(key,value){
alert(key +":"+value);
});

2、去除数组重复项

(1)实现代码

function unique(arr){
//第一步:把数组中的值,变成js对象中的key
var obj = {}; //私有对象
for( var i = 0,j = arr.length;i<j;i++){
obj[arr[i]] = true;
}
//第二部:再把js对象还原成数组
var arr = [];//私有对象
for(var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
}
return arr;
}

(2)测试程序

var arr = [1,1,3,4,5];
alert(unique(arr)); //显示1,3,4,5

最新文章

  1. Nginx中FastCGI配置优化
  2. Linuxc:创建与监控多个子进程
  3. 标准库函数atoi的实现
  4. 心情闲适,发几个tatanic的图
  5. uva 816 Abbott的复仇
  6. 【MySQL】MySQL锁和隔离级别浅析二 之 INSERT
  7. NSArray函数
  8. javascript实现Map
  9. (原)前端知识杂烩(css系列)
  10. ora-01031:insufficient privileges 解决方案
  11. JavaScript概要
  12. Spring MVC ajax:post/get 的具体实现
  13. 为什么使用dojo?dojo与jquery有什么不同?dojo适合什么开发场景?
  14. Android简介(一)
  15. 简单介绍python的双向队列
  16. Linux文件管理命令 cat
  17. jQuery(二)button事件改变标签值
  18. windows定时关机命令
  19. C语言指针的一些题目
  20. [Java][Web]解决 Request 的乱码

热门文章

  1. Nginx缓存配置指南
  2. sql INSERT语句
  3. [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
  4. debian 8 安装 codeblocks
  5. Elasticsearch介绍和安装与使用
  6. Java jar文件
  7. AWT Button类
  8. Quartz特点
  9. springMvc请求路径解析
  10. 20140730 word标题样式 数组