用户输入一段文字后,javascript会统计每个单词出现的频率,并从大到小打印出来。我已经使用两个数组来计算每个单词的数量。但是,我真的不知道如何根据数量打印它们,因为计数和单词存储在两个不同的数组中。请帮我。谢谢!
<!DOCTYPE html>
<html>
<head>
<title> practice </title>
<style>
.field{
font-size: 10px; /
width: 400px;
}
</style>
</head>
<body>
<p> This progam will calculate what you want to</p>
<p id="demo"></p>
<p id="result"></p>
<input type="text" id="paragraph" class="field",>
<button onclick="input()"><b>Submit</b></button>
<script>
function input() {
var test = document.getElementById("paragraph").value;
var arr =[];
arr = test.toLowerCase().split(" ");
document.getElementById("demo").innerHTML = arr;
function foo(arr) {
var a = [], b = [], prev;
arr.sort();
for ( var i = 0; i < arr.length; i++ ) {
if ( arr[i] !== prev ) {
a.push(arr[i]);
b.push(1);
} else {
b[b.length-1]++;
}
prev = arr[i];
}
return [a, b];
}
var result = foo(arr);
document.write('[' + result[0] + ']<br>[' + result[1] + ']')
}
</script>
</body>
</html>
最佳答案
你可以试试这个:
1- 插入您的数据:同一对象中的单词和单词计数
2- 使用键 count
对此对象进行排序
<p id="demo"></p>
<p id="result"></p>
<input type="text" id="paragraph" class="field",>
<button onclick="input()"><b>Submit</b></button>
<script>
function input() {
var test = document.getElementById("paragraph").value;
var arr =[];
arr = test.toLowerCase().replace(/[^a-zA-Z ]/g, "").split(/\s+/);
/*remove all special characters: there remove anything that's not letter*/
/*or replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '') --> place all characters you want to avoid here */
document.getElementById("demo").innerHTML = arr;
function foo(arr) {
var a = [];
var new_item;
var counter=0;
for ( var i = 0; i < arr.length; i++ ) {
new_item=true;
for (var j = 0; j < a.length; j++) {
if(a[j]['word']== arr[i]){
a[j]['count'] ++;
new_item=false;
}
}
if(new_item){
a[counter] = {}; a[counter]["word"] = arr[i];a[counter]["count"] = 1;
counter ++;
}
}
a.sort(function(a,b) {
return parseInt(b.count) - parseInt(a.count);
});
return a;
}
var result = foo(arr);
for ( var i = 0; i < result.length; i++ ) {
document.write("you wrote :"+result[i]['word']+" "+result[i]['count']+" times<br/>");
}
}
</script>
关于Javascript--统计每个字符串出现的频率并从大到小打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39749835/