Demo 1:
//模拟Java中的Map
function Map(){
//private
var obj = {};//空的对象容器,承放键值对
//put
this.put = function(key,value){
obj[key] = value;
};
//size方法,获得容器的个数
this.size = function(){
var count = 0;
for(var attr in obj){
count++;
}
return count;
};
//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];
}
};
//eachMap方法
this.eachMap = function(fn){
for(var attr in obj){
fn(attr,obj[attr]);
}
};
//模拟Java里的Map
var obj = new Map();
obj.put("0",12);
obj.put("1",13);
obj.put("2",13);
obj.eachMap(function(key,value){
alert(key+":"+value);
});
Demo 2
var arr = [2,1,2,10,2,3,5,5,1,10,13];
//js对象的特性 在js对象中key是永远不会重复的
//1、把数组转成js的对象
//2、把数组中的值,变成js对象当中的key
//3、把这个对象再还原成数组
//把数组转成js的对象
function toObject(arr){
var obj = {};
for(var i=0;i<arr.length;i++){
obj[arr[i]] = true;
}
return obj;
}
//把对象转成数组
function toArray(obj){
var arr = [];
for(var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
}
return arr;
}
//综合的方法 去掉数组中的重复项
function union(newarr){
return toArray(toObject(newarr));
}
alert(union(arr));