因此,我尝试映射字符在字符串中出现的次数。我知道在C++中是这样的。
std::string str = "AbBAaaaa";
std::unordered_map<char, int> myMap;
for(auto i = str)
{
++mymap[i];
}
我该如何将其转换为JavaScript?
发布于 2018-08-20 08:36:15
我会将字符串reduce
到一个按字符索引的对象中。为输入中的每个元素调用传递给reduce
的函数,其中第一个参数( a
)是累加器,它要么是初始值(这里是{}
),要么是上一次迭代返回的内容。第二个参数( char
)是被迭代的当前字符。
const str = "AbBAaaaa";
const charCounts = Array.prototype.reduce.call(str, (a, char) => {
a[char] = (a[char] || 0) + 1;
return a;
}, {});
console.log(charCounts);
您还可以使用
const charCounts = [...str].reduce((a, char) => // ...
它更短,可能更容易理解,但不必要地从str
创建一个中间数组。
带有for
循环的命令式版本将如下所示:
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);
发布于 2018-08-20 09:31:21
Javascript已经有了地图,您可以在您的C++应用程序中获得与此代码片段相同的结果
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));
https://stackoverflow.com/questions/51922874
复制相似问题