JavaScript笔记 - Object对象特性的应用
可以依据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