• 同事写的javascript hashMap


    //实现hasnArrayMap

        var hashMap = function(){
            this.items = [];
            this.map = {};
        }
     
        hashMap.prototype.set =  function(key,value){
            var isFindInArray = false ;
            var obj ={key:key, value:value};
            for(var i = 0;i<this.items.length;i++){
                if(this.items[i].key == key) {
                    obj.index = i;
                    this.items[i] = obj;
                    isFindInArray = true;
                    break;
                }
            }
            if(!isFindInArray) {
                this.items.push(obj);
                obj.index = this.items.length - 1;
            }
            this.map[key] = value;
        }
     
        hashMap.prototype.get =  function(){
            var isKey = typeof(arguments[0]) === 'string';
            if(isKey) {
                return this.map[arguments[0]];
            } else {
                if(typeof(arguments[0])=='number') {
                    var index = parseInt(arguments[0]);
                    if(index >= 0 && index < this.items.length) {
                        return this.items[index].value;
                    } else {
                        return 'undefined';
                    }
                } else {
                    return 'undefined';
                }
            }
        }
     
        hashMap.prototype.remove = function(){
            var isKey = typeof(arguments[0]) === 'string';
            if(isKey) {
                return this._remove(this.map[arguments[0]]);
            } else {
                if(typeof(arguments[0])=='number') {
                    var index = parseInt(arguments[0]);
                    if(index >= 0 && index < this.items.length) {
                        return this._remove(this.items[index]);
                    } else {
                        return 'array over flow';
                    }
                } else {
                    return 'wrong arguments';
                }
            }
        }
     
        hashMap.prototype._remove = function(obj){
            if(obj) {
                var index = obj.index,
                    key = obj.key;
                this.items.splice(index ,1);
                if(this.map[key])
                    delete this.map[key];
            }
            return true;
        }
     
        hashMap.prototype.size = function(){
            return this.items.length;
        }
     
        /*
        var testArray = new SixDegree.hashMap();
        testArray.set('name1' , '1');
        testArray.set('name2' , '2');
        testArray.set('name3' , '3');
     
        console.log(testArray.get('name1'));
        console.log(testArray.get('name2'));
        console.log(testArray.get('name3'));
     
        console.log(testArray.get(0));
        console.log(testArray.get(1));
        console.log(testArray.get(2));
     
        testArray.remove(0);
     
        for(var i=0 , len = testArray.size();i<len ; i++){
            console.log(testArray.get(i));
        }
     
        testArray.remove('name2');
        for(var i=0 , len = testArray.size();i<len ; i++){
            console.log(testArray.get(i));
        }
        */

     

  • 相关阅读:
    PMP考试冲刺进行中。。。
    公司内部系统的网络映射设置问题
    不是付出就有回报,但是没有付出就绝对不会有回报
    系统之间的接口测试
    [七、项目实战]9完成电子商务列表页面剩余内容的制作
    [七、项目实战]11完成银行卡片视图的创建
    [七、项目实战]14完成存款金额输入界面的创作
    [七、项目实战]13开始制作一份用来计算存款利息的界面
    [七、项目实战]12创建银行卡片的列表并实现动画效果
    [七、项目实战]7给页面里的内容添加动画效果
  • 原文地址:https://www.cnblogs.com/yanypan/p/2801365.html
Copyright © 2020-2023  润新知