我有一个数组
["academy"]
,我需要计算数组中字符串的字符数。
输出:
a:2
c:1
d:1
e:1
m:1
y:1
像这样
我尝试了两个for循环
function sumChar(arr){
let alph="abcdefghijklmnopqrstuvxyz";
let count=0;
for (const iterator of arr) {
for(let i=0; i<alph.length; i++){
if(iterator.charAt(i)==alph[i]){
count++;
console.log(`${iterator[i]} : ${count}`);
count=0;
}
}
}
}
console.log(sumChar(["abdulloh"]));
工作有误
输出:
a : 1
b : 1
h : 1
undefined
这是一个简洁的方法。
[...new Set(word.split(''))]
创建一个省略任何重复项的字母数组。 .map
从该数组中取出每个字母并通过长度检查器运行它。 ({ [m]: word.split(m).length - 1 })
将字母设置为 object key
,而 word.split(m).length - 1
是确定该字母出现次数的快速方法。
const countLetters = word => (
[...new Set(word.split(''))].map(m => ({
[m]: word.split(m).length - 1
})))
console.log(countLetters("academy"))
您也可以使用正则表达式检查出现的情况。在此我创建了一个方法来检查字符串中的字符。希望有帮助。
word: string = 'abcdefghijklkmnopqrstuvwxyzgg';
charsArrayWithCount = {};
CheckWordCount(): void {
for(var i = 0;i < this.word.length; i++){
if(this.charsArrayWithCount[this.word[i]] === undefined){
this.charsArrayWithCount[this.word[i]] = this.charCount(this.word, this.word[i]);
}
}
console.log(this.charsArrayWithCount);
}
charCount(string, char) {
let expression = new RegExp(char, "g");
return string.match(expression).length;
}
Array.reduce()
方法就可以轻松实现这个要求。
现场演示:
const arr = ["academy"];
const res = arr.map(word => {
return word.split('').reduce((obj, cur) => {
obj[cur] = obj[cur] ? obj[cur] + 1 : 1
return obj;
}, {});
});
console.log(res);
我认为这是最简单的:
const input = 'academy';
const res = {};
input.split('').forEach(a => res[a] = (res[a] ?? 0) + 1);
console.log(res);
let arr = ["academy"];
let theResult = {};
for (let i = 0; i < arr.length; i++) {
let word = arr[i];
for (let char of word) {
if (char !== " ") {
theResult[char] = word.split("").filter((x) => x == char).length;
}
}
}