2017-03-25 71 views
-1

對於我需要計算多個字符串出現次數的示例程序。 所以我用一個地圖來計算使用一個字符串作爲鍵的數字作爲價值。爲此,我在地圖對象中添加了一個函數:使用映射計數字符串發生次數

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

這不符合預期。此輸入:

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

結果:

測試= { 「一」:1, 「B」:1}

期望的結果是:

{「a」:2,「b」:1}

如果該鍵不存在其設置爲1。好了
如果密鑰確實存在,它的值保持爲1壞

調試我發現,this指針始終是一個空的地圖後。

所以我確實讀到了這個關鍵字,它實際上並沒有解釋任何事情。 這個應該是地圖吧?

爲什麼不能正常工作?

這是非常簡單的代碼我知道這就是爲什麼我想知道它是如何工作的。

我希望有人能幫助我:)

回答

1

使用try 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);