配列の中の文字列と同じだったら、それぞれの文字列ごとにカウントする

/*
  与えられた文字列の出現回数をそれぞれカウントする
  使い方
    var hoge = MultiCounter.create (['a', 'b', 'c']);
    hoge.countup('a');
    hoge.countup('a');
    hoge.countup('b');
    var rst = hoge.getCount (); => [2, 1, 0] 
    
*/
(function () {

  function MultiCounter (aryStrList) {
    this.a = aryStrList;
  }
  
  function getCount () {//カウント数を配列で返す
    return this.a.map (function (a) { return this[a]; }, this.v);
  }
  
  function countup (str) {//対象の文字列ならばカウントする
    this.v[str] += 1;
  }
  
  function reset (n) {//与えられた初期値でリセットする
    this.v = new Object;
    this.a.forEach (function (a) { this[a] = n; }, this.v);
  }
  
  function create (aryStrList, val) {//オブジェクトを作る
    var obj = new MultiCounter (aryStrList);
    obj.reset (val || 0);
    return obj;
  }
  
  MultiCounter.prototype.getCount = getCount;
  MultiCounter.prototype.countup = countup;
  MultiCounter.prototype.reset = reset;
  
  MultiCounter.create = create;
  
  this.MultiCounter = MultiCounter;
}) ();