2016-11-15 16 views
-1

テキスト内の所定の単語(単語リスト)の数をカウントする必要があります。これは私がこれまでにやっていることです:javascriptを使用して特定の単語の単語頻度カウンタ

function frequencies(text, wordlist){ 
    var words = text.split(/\s/); 
    var freqMap = {}; 
    words.forEach(function(w){ 
    if (!freqMap[w] && wordlist){ 
     freqMap[w] = 0; 
    } 
    freqMap[w] += 1; 
    }); 
    return freqMap; 

} 

を、それが与えられたテキスト内のすべての単語を数える瞬間、どのように私はそれが単語リストに与えられた唯一の単語を数える作るのですか?

答えて

0

Array#indexOfメソッド(またはArray#includesメソッド)を使用して、指定されたリストにチェックが入っています。

function frequencies(text, wordlist) { 
    var words = text.split(/\s/); 
    var freqMap = {}; 
    words.forEach(function(w) { 
    if (wordlist && wordlist.indexOf(w) > -1) { // or wordlist.includes(w) 
     if (!freqMap[w]) { 
     freqMap[w] = 0; 
     } 
     freqMap[w] += 1; 
    } 
    }); 
    return freqMap; 
} 
0

この例では、テキストにいくつかの基本的な句読点があります。それは句読点を削除し、スペース上で分割し、reduceを使ってあなたが望むオブジェクトを構築します。

let wordlist = ['hello', 'bob', 'you', 'later']; 
 
let text = 'hello bob, how are you doing? i hope you are doing well. see you later.'; 
 

 
function frequencies(text, wordlist) { 
 
    return text.replace(/(\.|\?|,)/g, '').split(' ').reduce(function(prev, curr) { 
 
    if (wordlist.includes(curr)) { 
 
     if (prev[curr]) 
 
     prev[curr]++; 
 
     else 
 
     prev[curr] = 1; 
 
    } 
 
    return prev; 
 
    }, {}); 
 
} 
 

 
console.log(frequencies(text, wordlist))

関連する問題