3 回答

TA贡献1780条经验 获得超1个赞
只需遍历字符串的每个字符,并将它们计数到一个对象中。
一个简单的解决方案是:
let str = "The quick brown fox jumps over the lazy dog";
const count = string => {
const characters = {};
for (let character of string) {
characters[character] = characters[character] + 1 || 1;
}
return characters;
}
console.log(count(str));
您可以将结果用作:
let result = count(str);
console.log(result["o"]); // 4
更新
如果您需要字符串输出,一种选择是使用第二个循环来写出结果:
let str = "The quick brown fox jumps over the lazy dog";
const count = string => {
const characters = {};
let str = "";
for (let character of string) {
characters[character] = characters[character] + 1 || 1;
}
for (let key in characters) {
str += `${key}${characters[key]}`
}
return str;
}
console.log(count(str));
或者,如果您只是简单地不关心格式:
return JSON.stringify(characters);

TA贡献1848条经验 获得超2个赞
我认为最简单和最易读的
const countChars = str => {
const chars = {}; // create a counter object
const arr = str.split(""); // make an array from the characters
arr.forEach(char => chars[char] = ++chars[char] || 1) // add counters to counter object
return arr // return the array but first
.map(char => char + chars[char]) // map to counters
.join(""); // and then join to string
}
console.log(countChars("Now is the time"));
按第一次出现的顺序减少到只是 char + number
const countChars = str => {
const chars = {}; // create a counter object
const arr = str.split(""); // make an array from the characters
arr.forEach(char => chars[char] = ++chars[char] || 1) // add counters to counter object
return Object.keys(chars) // return the chars
.map(char => char + chars[char]) // concatenated with counters
.join(""); // and then join to string
}
console.log(countChars("woof the looping loop"));

TA贡献1898条经验 获得超8个赞
Object.entries()您可以使用,reduce()和flat()方法尝试此操作:
function strLetterCount(str) {
return Object.entries([...str].reduce(function(ac, s) {
ac[s] = ++ac[s] || 1
return ac;
}, {})).flat().join('')
}
console.log(strLetterCount("taco"))
console.log(strLetterCount("chocotaco"))
解释:
使用
[...str]
我们首先将字符串转换为数组。然后使用
.reduce()
我们试图将每个字符串元素的计数和存储到一个对象中,例如:{t: 1, a: 1, c: 1, o: 1}
然后使用
Object.entries()
我们得到如下数据:[["t", 1], ["a", 1], ["c", 1], ["o", 1]]
最后使用
flat()
&join()
我们得到所需的输出格式为字符串t1a1c1o1
添加回答
举报