2017-03-25 3 views
-1

少しのプログラムでは、複数の文字列の出現回数をカウントする必要がありました。 私はマップを使用して文字列をキーとして数字を値としてカウントしました。このため、私はMapオブジェクトに関数を追加しました:マップを使用した文字列の出現のカウント

Map.prototype.inc = function(s) { 
    if (this.has(s)) this[s] = this[s]+1 
    else    this[s] = 1 
} 

これは意図した通りに動作しません。この入力:

テスト= { "A":1、 "B":1}

所望の結果である:

var test = new Map() 
test.inc("a"); test.inc("a"); test.inc("b"); 

結果

{"a":2、 "b":1}

キーはその値を存在しなかった場合、キーはオーケー1
にそのセットを存在しなかった場合、私は、このポインタは常に空のマップであることが判明し、デバッグした後1.悪い

まま。

だから私はこのというキーワードを実際に説明していないキーワードを読んだことがあります。 このは地図にする必要がありますか?

なぜこれが機能しないのですか?

これはかなり簡単なコードなので、どのように動作しているか知りたいのです。

私は誰かが私を助けることができます:)

答えて

1

このようなsetgetメソッドを使用してみてください願っています。

Map.prototype.inc = function(s) { 
 
     if (this.has(s)) { 
 
      this.set(s, this.get(s) + 1);  
 
     } else { 
 
      this.set(s, 1); 
 
     } 
 
    } 
 

 
    var t = new Map(); 
 
    t.inc('a');t.inc('a');t.inc('b'); 
 
    console.log(t);

関連する問題