检查字符串中重复的单词,并在javascript中保持计数
我试图在一个字符串中找到重复的单词,并记下它被重复了多少次。 如何在javascript中实现这一点检查字符串中重复的单词,并在javascript中保持计数,javascript,loops,Javascript,Loops,我试图在一个字符串中找到重复的单词,并记下它被重复了多少次。 如何在javascript中实现这一点 让checkWords=“我不会永远活着,但我想趁活着的时候活着” {newStr}用于反词 {newStr2}对于计数器字母如何计算每个单词在字符串中出现的次数: 使用.replace() 使用.toLowerCase() 使用.split() 循环遍历每个单词(.forEach),将其添加到单词计数对象 const result=document.getElementById('resu
让checkWords=“我不会永远活着,但我想趁活着的时候活着”代码>
{newStr}用于反词
{newStr2}对于计数器字母如何计算每个单词在字符串中出现的次数:
使用.replace()
使用.toLowerCase()
使用.split()
循环遍历每个单词(.forEach
),将其添加到单词计数对象
const result=document.getElementById('result');
让str=“我不会永远活下去,但我想趁活着的时候活下去。”;
//从字符串中去掉所有标点符号
让strStripped=str.replace(/[,!]/g');
result.innerHTML=`strStripped:${strStripped}\n`;
//将字符串分隔为小写单词数组
让words=strStripped.toLowerCase().split(“”);
result.innerHTML+='words:'+JSON.stringify(words,null,2);
//词数的形式对象
让wordCounts={};
words.forEach(word=>{
字数[字]=(字数[字]| | 0)+1;
});
result.innerHTML+='\n排序计数:'+
stringify(字数,null,2)代码>
首先将给定字符串转换为数组。为此,请使用string.split(“”)
其次,创建一个映射
,它将单词存储为关键字,并计算为值
现在遍历stringArray并将当前单词存储到映射中。并在每次找到该单词时增加该单词的计数
检查下面的代码
让words=“我不会永远活着,但我想趁活着的时候活着”;
函数计数重复词(句子){
让单词=句子。拆分(“”);
让wordMap={};
for(设i=0;i
我希望这对您有所帮助。这能回答您的问题吗?是的,问题是类似的,但我希望答案中有一点细节。还有许多其他的重复,因为这是一个非常常见的操作。搜索词:“js词频计数”。如果你想在答案中找到一些细节,你需要在问题中添加一些细节。这里没有任何尝试——这是一种习惯。请看。@ggorlen谢谢你,但你的帮助对我没有帮助。这里使用对象来区分单词,关键字是单词,值是出现的次数obj[split[i]==undefined
用于检查对象是否包含来自数组的单词:split[i]
({…acc[rec]:(acc[rec]| 0)+1}您能解释一下这部分吗,please@Zebaspread operator…acc,rec its elemets array newStr,如果acc[rec]非未定义或空转到+1或0。我无法解释reduce,但这里所有的魔法都使reduce变为reduce。如果我的回答对您有帮助,请检查我的回答和acc[rec]观看我们acc中的重复元素
let checkWords = "I am not gonna live forever, but I wanna live while I am alive"
const newStr = checkWords.split(' ').reduce((acc,rec) => {
return ({ ...acc, [rec]: (acc[rec] || 0) + 1 })
},{})
const newStr2 = checkWords.split('').reduce((acc,rec) => {
return ({ ...acc, [rec]: (acc[rec] || 0) + 1 })
},{})