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
posted @ 2018-02-18 21:22  苏贺  阅读(410)  评论(0编辑  收藏  举报