我如何计算数组中单词的字符数?

问题描述 投票:0回答:5

我有一个数组

["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
javascript arrays string count char
5个回答
0
投票

这是一个简洁的方法。

[...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"))


0
投票

您也可以使用正则表达式检查出现的情况。在此我创建了一个方法来检查字符串中的字符。希望有帮助。

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;
}

0
投票

借助

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);


0
投票

我认为这是最简单的:

const input = 'academy';

const res = {};

input.split('').forEach(a => res[a] = (res[a] ?? 0) + 1);

console.log(res);


0
投票
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;
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.