JavaScript笔记 - Object对象特性的应用

时间:2024-09-26 18:36:26

可以依据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