本文實例講述了javascript模擬map輸出與去除重復項的方法。分享給大家供大家參考。具體方法如下:
1.Javascriptmap輸出
function Map(){
// private
var obj = {} ;// 空的對象容器,承裝鍵值對
// put 方法
this.put = function(key , value){
obj[key] = value ;// 把鍵值對綁定到obj對象上
}
// size 方法 獲得map容器的個數
this.size = function(){
var count = 0 ;
for(var attr in obj){
count++;
}
return count ;
}
// get 方法 根據key 取得value
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];
}
}
// eachMap 變量map容器的方法
this.eachMap = function(fn){
for(var attr in obj){
fn(attr, obj[attr]);
}
}
}
//模擬java裡的Map
var m = new Map();
m.put('01' , 'abc');
m.put('02' , false) ;
m.put('03' , true);
m.put('04' , new Date());
//alert(m.size());
//alert(m.get('02'));
//m.remove('03');
//alert(m.get('03'));
m.eachMap(function(key , value){
alert(key +" :"+ value);
});
2.去除map中重復項
var arr = [2,1,2,10,2,3,5,5,1,10,13];//object
//js對象的特性:在js對象中key是永遠不會重復的
/*
var obj = new Object();
obj.name = 'z3';
obj.age = 20 ;
//alert(obj.name);
obj.name = 'w5';
alert(obj.name);
*/
// 1 把數組轉成一個js的對象
// 2 把數組中的值,變成js對象當中的key
// 3 把這個對象 再還原成數組
// 把數組轉成對象
function toObject(arr){
var obj = {} ; // 私有的對象
var j ;
for(var i=0 , j= arr.length ; i<j; i++){
obj[arr[i]] = true ;
}
return obj ;
}
// 把這個對象轉成數組
function keys(obj){
var arr = [] ; // 私有對象
for(var attr in obj){
if(obj.hasOwnProperty(attr)){//YUI底層代碼
arr.push(attr);
}
}
return arr ;
}
//綜合的方法 去掉數組中的重復項
function uniq(newarr){
return keys(toObject(newarr));
}
alert(uniq(arr));
希望本文所述對大家的javascript程序設計有所幫助。