对于一个小例子程序,我需要计算多个字符串的出现次数。 所以我使用一个映射来计算使用字符串作为键的数字作为值。为此我向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.错误
调试后,我发现这个指针总是一张空地图。
所以我确实读过关于这个关键字,它实际上没有解释任何事情(对我来说)。 这个应该是地图吗?
为什么这不起作用?
这很简单的代码我知道这就是为什么我想知道它是如何工作的。
我希望有人可以帮助我:)。
答案 0 :(得分:1)
尝试使用set
和get
这样的方法。
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);