Javascript 如何在字符串中找到匹配单词的确切数量?
对于一个项目,我编写了一个函数,其中包括以下内容:Javascript 如何在字符串中找到匹配单词的确切数量?,javascript,Javascript,对于一个项目,我编写了一个函数,其中包括以下内容: var filtering_words = ['alpha', 'beta', 'gamma']; //finding matching words var prohibited_words = filtering_words; for (var i = 0; i < prohibited_words.length; i++) { if (value.indexOf(prohibited_words[i]) > -1) {
var filtering_words = ['alpha', 'beta', 'gamma'];
//finding matching words
var prohibited_words = filtering_words;
for (var i = 0; i < prohibited_words.length; i++) {
if (value.indexOf(prohibited_words[i]) > -1) {
user_report['matching_words'].push(prohibited_words[i]);
user_report['matching_words_amount'] = user_report['matching_words'].length;
}
}
var-filtering_-words=['alpha','beta','gamma'];
//查找匹配词
var禁止的单词=过滤单词;
for(变量i=0;i-1){
用户报告['matching_words']。推送(禁止的_words[i]);
用户报告['matching_words_amount']=用户报告['matching_words'].长度;
}
}
字符串:“alpha-beta-gamma”
现在我只得到所有匹配的单词。
所以我的结果是这样的:['alpha'],['beta'],['gamma']
但我也想知道“过滤词”在我的字符串中的频率。在这种情况下,我想知道实际上有两个beta
有什么想法吗
干杯您可以使用reduce()
在字典中填入禁止使用的单词及其频率:
var str = "alpha beta yo alpha beta lorem ipsum gamma alpha",
filtering_words = ['alpha', 'beta', 'beta', 'gamma'];
// divide the str into words, then check if a word is prohibited and add (increment) it to the dictionary
var result = str.split(' ').reduce(function(acc,v)
{
if (filtering_words.indexOf(v)>=0)
{
acc[v] = (acc[v] || 0) + 1;
}
return acc
},{})
console.log(result)
// {alpha: 3, beta: 2, gamma: 1}
此代码为您提供了“不必要”的词语:
让arr=['alpha','beta','gamma','beta'];
对于(设i=0;i
将结果存储在对象中,而不是存储在数组中,以便将过滤后的单词映射到出现的次数
要查找出现次数,请使用与获取所有出现次数的数组(对于不区分大小写的搜索,使用i
标志),然后获取生成的数组长度
var user_report={matching_words:{}
var值='lambdabetaalphabeta'
var筛选_words=['alpha','beta','gamma'];
var禁止的单词=过滤单词;
for(变量i=0;i console.log(user_report)
您可以使用array#filter
查找值的出现情况user\u report['matching\u words\u amount']=filtering\u words.filter(word=>word==value.length)。我喜欢这种方式,但遗憾的是,它不能确保我的字符串包含空格作为分隔符。所以我会错过字符串中的结果,比如“lambdabetaalphabeta”。