Javascript 扫描一个特定的div并显示3个最常用的单词
这是我的标记:Javascript 扫描一个特定的div并显示3个最常用的单词,javascript,jquery,Javascript,Jquery,这是我的标记: <body> <div id="headbox"> <p>Whatever...</p> </div> <div id="feed"> <div> <p>I hate cats</p> </div> <div> <p>I like cats</p> <
<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>
不管怎样
我讨厌猫
我喜欢猫
我喜欢猫
我喜欢猫
交易是我需要一个脚本来计算出现在
中的所有单词
输出应包装在
标记或
标记中
<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
此提要中使用的前3个单词:
1. 猫4x
2. 像3x
3. 仇恨1x
这将是输出
正如你所看到的,这个词(或者更好的是字母)
I
没有被考虑。计数时不考虑3个字母以下的每个单词。只需在innerHTMLs中循环,在空格上拆分文本,并使用结果数组的每个值添加或更新主数组,该主数组由找到的单词索引,其值为单词的计数。用空格拆分目标元素的内部文本,计算词频,按最频繁的词频排序,并根据您的要求设置前三名的格式
类似这样(未经测试):
var getMostFrequentWords=函数(单词){
var freq={},freqArr=[],i;
//将每个单词映射到“freq”中的频率。
对于(i=0;i
这就是我对单词进行排序的方法。在HTML的某个地方,我将有一个ol元素用于自动编号
var ol = document.getElementById('myOl');
var sorted_words = [];
for(var i in words) if(words.hasOwnProperty(i) {
sorted_words.push([i, words[i]]);
}
sorted_words.sort(function(a, b){
return b[0] - a[0];
})
.reverse()
.slice(0, 3)
.forEach(function(n, i, ary){
var li = document.createElement('li')
.appendChild(document.createElement('p'))
.textContent = n[1] + " " + n[0] + "x";
ol.appendChild(ul);
});
像这样的东西应该有用…你试过我喜欢乌龟吗?
?是的。乌龟是很好的宠物。你应该试一下乌龟。:)别傻了,但这个问题值得否决,因为它“没有显示任何研究成果”.来吧,Tomkay,你至少得试试…+1,但我建议使用主对象而不是主数组。@nnnnnn,我唯一关心的对象是计算诸如它是
和其他缩略语之类的单词。属性名中不允许使用撇号。什么?没有我可以直接复制和粘贴的自定义脚本?@Tomkay,没错。只要告诉我你的信用卡号码,它就会在那里。:)你可以的,伙计。试试看。@Jonathan M:它是:var o={};o[“it's”]=123;
。
var text = document.getElementById('myDiv').textContent.split(' ');
var words = {};
text.forEach(function(n, i, ary){
if(n.length > 3) {
words[n] = (words[n] || 0) + 1;
}
});
var ol = document.getElementById('myOl');
var sorted_words = [];
for(var i in words) if(words.hasOwnProperty(i) {
sorted_words.push([i, words[i]]);
}
sorted_words.sort(function(a, b){
return b[0] - a[0];
})
.reverse()
.slice(0, 3)
.forEach(function(n, i, ary){
var li = document.createElement('li')
.appendChild(document.createElement('p'))
.textContent = n[1] + " " + n[0] + "x";
ol.appendChild(ul);
});