首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中,C++ std::unordered_map<char和int>的等价物是什么?

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

Stack Overflow用户
提问于 2018-08-20 08:33:47
回答 2查看 2.2K关注 0票数 3

因此,我尝试映射字符在字符串中出现的次数。我知道在C++中是这样的。

代码语言:javascript
复制
std::string str = "AbBAaaaa";
std::unordered_map<char, int> myMap;

for(auto i = str)
{
   ++mymap[i];
}

我该如何将其转换为JavaScript?

EN

回答 2

Stack Overflow用户

发布于 2018-08-20 08:36:15

我会将字符串reduce到一个按字符索引的对象中。为输入中的每个元素调用传递给reduce的函数,其中第一个参数( a)是累加器,它要么是初始值(这里是{}),要么是上一次迭代返回的内容。第二个参数( char)是被迭代的当前字符。

代码语言:javascript
复制
const str = "AbBAaaaa";
const charCounts = Array.prototype.reduce.call(str, (a, char) => {
  a[char] = (a[char] || 0) + 1;
  return a;
}, {});
console.log(charCounts);

您还可以使用

代码语言:javascript
复制
const charCounts = [...str].reduce((a, char) => // ...

它更短,可能更容易理解,但不必要地从str创建一个中间数组。

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

代码语言:javascript
复制
const str = "AbBAaaaa";
const charCounts = {};
for (let i = 0; i < str.length; i++) {
  const char = str[i];
  charCounts[char] = (charCounts[char] || 0) + 1;
}
console.log(charCounts);

票数 4
EN

Stack Overflow用户

发布于 2018-08-20 09:31:21

Javascript已经有了地图,您可以在您的C++应用程序中获得与此代码片段相同的结果

代码语言:javascript
复制
function charOccurances(str) {
  var myMap = {};
  if(str.length!==0){
    for (let i = 0; i < str.length; i++) {
      myMap[str[i]] = (myMap[str[i]] || 0) + 1;
    }
  }
  return myMap;
}

const str = "AbABaaaa";
console.log(charOccurances(str));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51922874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档