zoukankan      html  css  js  c++  java
  • JavaScript笔记

          可以依据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
  • 相关阅读:
    虹软人脸识别在 linux中so文件加载不到的问题
    tomcat 控制台乱码问题
    sourceTree git 空目录从远程仓库克隆代码出现warning: templates not found
    springboot项目更改代码后实时刷新问题
    spring 3.0 整合redis
    随笔
    Centos 7 安装 FFmpeg
    Postgresql 查看当前数据库所有的触发器
    oracle只导出触发器
    oracle 批量删除触发器
  • 原文地址:https://www.cnblogs.com/sh086/p/8453206.html
Copyright © 2011-2022 走看看