Javascript 中 C++ std::unordered_map<char, int> 的等价物是什么?

Tom*_*nor 5 javascript c++ unordered-map hashmap

所以我试图映射一个字符在字符串中出现的次数。我知道在 C++ 中会是这样。

std::string str = "AbBAaaaa";
std::unordered_map<char, int> myMap;

for(auto i = str)
{
   ++mymap[i];
}
Run Code Online (Sandbox Code Playgroud)

我如何将其翻译成 JavaScript?

Cer*_*nce 5

我将reduce字符串放入按字符索引的对象中。reduce为输入中的每个元素调用传递给的函数,其中第一个参数( a)是累加器,它可以是初始值({}此处)或上次迭代返回的值。第二个参数 (the char) 是正在迭代的当前字符。

const str = "AbBAaaaa";
const charCounts = Array.prototype.reduce.call(str, (a, char) => {
  a[char] = (a[char] || 0) + 1;
  return a;
}, {});
console.log(charCounts);
Run Code Online (Sandbox Code Playgroud)

你也可以使用

const charCounts = [...str].reduce((a, char) => // ...
Run Code Online (Sandbox Code Playgroud)

它更短,可能更容易一眼理解,但不必要地从str.

带有循环的命令式版本for如下所示:

const charCounts = [...str].reduce((a, char) => // ...
Run Code Online (Sandbox Code Playgroud)