这是我的标记:
<body>
<div id="headbox">
<p>Whatever...</p>
</div>
<div id="feed">
<div>
<p>I hate cats</p>
</div>
<div>
<p>I like cats</p>
</div>
<div>
<p>I like cats</p>
</div>
<div>
<p>I like cats</p>
</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
这笔交易是我需要一个脚本来计算出现在中的所有单词<div id="feed">.
输出应包含在<p>标签或<span>标签中.
<h3>The top 3 used words in this feed:</h3>
1. <p>cats</p> 4x
2. <p>like</p> 3x
3. <p>hate</p> 1x
Run Code Online (Sandbox Code Playgroud)
这将是输出.
正如你所看到的那样(或更好的字母)I没有被考虑.计数不会考虑3个字母以下的每个字.
只需循环遍历innerHTML,在空格上分割文本,并使用结果数组的每个值来添加或更新由找到的单词索引的主数组,其中值是单词的计数.
按空格分割目标元素的内部文本,计算单词频率,按最频繁排序,并根据您的要求格式化前3个.
像这样(未经测试):
var getMostFrequentWords = function(words) {
var freq={}, freqArr=[], i;
// Map each word to its frequency in "freq".
for (i=0; i<words.length; i++) {
freq[words[i]] = (freq[words[i]]||0) + 1;
}
// Sort from most to least frequent.
for (i in freq) freqArr.push([i, freq[i]]);
return freqArr.sort(function(a,b) { return b[1] - a[1]; });
};
var words = $('#feed').get(0).innerText.split(/\s+/);
var mostUsed = getMostFrequentWords(words);
// Now you can prepare "mostUsed.slice(0,3)" as the top 3 words/count.
Run Code Online (Sandbox Code Playgroud)
你需要修改它以拒绝短于3个字符的单词,但你明白了.
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |