Javascript はマップコレクションを実装します_javascript スキル

WBOY
リリース: 2016-05-16 16:05:43
オリジナル
1266 人が閲覧しました

数日前、プロジェクト内で同じものを収集するためにマップを使用したいと思いました。今日は少し時間があり、それを実装しました。
皆さん笑わないでください

コード

var Map = function (){
  /************基础变量**************/
  var hashmap = {};
  var keys = [];
  var vals = [];
  var entrys = [];
  var size = 0;
  var index = {};
 
  var Entry = function(key,value){
    var entryKey = key;
    var entryValue = value;
    this.getKey = function (){
      return entryKey;
    };
    this.getValue = function(){
      return entryValue;
    };
  };
  /************基本方法 按字母排序**************/
  this.clear = function(key) {
    hashmap[key] = undefined;
    var i = index[key];
    entrys.splice(i,1);
    vals.splice(i,1);
    keys.splice(i,1);
    size --;
  };
   
  this.entrySet = function() {
    return entrys;
  };
   
  this.get = function(key){
    return hashmap[key];
  };
   
  this.isEmpty = function() {
    if(hashmap) return true;
    return false;
  };
 
  this.keySet = function() {
    return keys;
  };
   
  this.put = function(key,value){
    if(!this.get(key)){
      entrys.push(new Entry(key,value));
      keys.push(key);
      vals.push(value);
      index[key] = size;
      size ++;
    } else {
      var i = index[key];
      entrys[i] = new Entry(key,value);
      vals[i] = value;
    }
    hashmap[key] = value;
  };
 
  this.size = function() {
    return size;
  };
   
  this.values = function() {
    return vals;
  };
};
/************扩展方法**************/
Map.prototype = {
  containsKey : function(key) {
    if(this.get(key)) return true;
    return false;
  },
  putAll : function(set) {
    for(var e in set){
      if(set[e]){
        this.put(e,set[e]);
      }
    }
  },
  remove : function(key) {
    var v = this.get(key);
    this.clear(key);
    return v;
  }
};
var h = new Map();
h.put('a',10);
h.put('b',11);
h.put('c',3);
h.put('d',5);
console.info(h.size());
h.clear('a');
console.info(h.containsKey('a'));
console.info(h.containsKey('b'));
console.info(h.size());
 
console.log(h.entrySet());
console.log(h.keySet());
console.log(h.values());
 
for(var i in h.entrySet()){
  var obj = h.entrySet()[i];
  console.log(obj.getKey() + ":" + obj.getValue());
}
  
ログイン後にコピー

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!