標籤:回呼函數 私人 get map對象 回調 cti count 還原 pos
可以依據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類型 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
JavaScript筆記 - Object對象特性的應用