Javascriptが実現したMap

3378 ワード


//Map.js
//js   Map
//v 1.0
function Map() {
    this.elements = new Array();

     //  map   
     this.size = function() {
        return this.elements.length;
     }

     //  map    
     this.isEmpty = function() {
        return (this.elements.length < 1);
     }

     //  map
     this.clear = function() {
        this.elements = new Array();
     }

     //        map ,
     //   _key    (containsKey(_key)  true),
     //    _value     
     this.put = function(_key, _value) {
         var i;
         for (i = 0; i < this.elements.length; i++) {
            if (this.elements[i].key == _key) {
                 this.elements[i].value = _value;
                 break;
            }
         }
         if (i == this.elements.length) {
            this.elements.push({key:_key, value:_value});
        }
     }

     //    _key        true,
     //        ,   false
     this.remove = function(_key) {
           for (var i = 0; i < this.elements.length; i++) {
            if (this.elements[i].key == _key){
                 this.elements.splice(i, 1);
                 return true;
            }
           }
           return false;
     }

     //   _key    ,      _key  ,   null
     this.get = function(_key) {
           for (var i = 0; i < this.elements.length; i++) {               
            if (this.elements[i].key == _key) {
                 return this.elements[i].value;
            }
           }
           return null;
     }

     //   _index     ,
     //  _index  0      map   ,   null
     this.element = function(_index) {
        if (_index < 0 || _index >= this.elements.length) {
               return null;
        }
        return this.elements[_index];
    }

     //  map       _key,
     //      true,    false
     this.containsKey = function(_key) {
           for (var i = 0; i < this.elements.length; i++) {
            if (this.elements[i].key == _key){
                 return true;
            }
           }
           return false;
     }
   
     //  map       _value,
     //      true,    false
     this.containsValue = function(_value) {
        for (var i = 0; i < this.elements.length; i++) {
            if (this.elements[i].value == _value){
                 return true;
            }
        }
        return false;
     }

     // map          
     this.values = function() {
        var arr = new Array();
        for (var i = 0; i < this.elements.length; i++) {
               arr.push(this.elements[i].value);
        }
        return arr;
     }

     // map          
     this.keys = function() {
        var arr = new Array();
        for (var i = 0; i < this.elements.length; i++) {
               arr.push(this.elements[i].key);
        }
        return arr;
     }
}
昔から書いていますが、ご叱正を歓迎します.