使用map计算字符串出现次数

时间:2017-03-25 23:37:44

标签: javascript prototype

对于一个小例子程序,我需要计算多个字符串的出现次数。 所以我使用一个映射来计算使用字符串作为键的数字作为值。为此我向Map对象添加了一个函数:

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");

结果:

  

test = {" a":1," b":1}

期望的结果是:

  

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

如果密钥没有设置为1.好的 如果密钥确实存在,则其值仍为1.错误

调试后,我发现这个指针总是一张空地图。

所以我确实读过关于这个关键字,它实际上没有解释任何事情(对我来说)。 这个应该是地图吗?

为什么这不起作用?

这很简单的代码我知道这就是为什么我想知道它是如何工作的。

我希望有人可以帮助我:)。

1 个答案:

答案 0 :(得分: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);