1

我写了一个Java脚本程序,它必须做以下事情:它必须从表格中的文本中取出句子,然后在表格中按字母顺序查找句子中每个单词的出现次数,如下所示:

this : 5 times 
the : 2 times .....and so on 

但实际上我的程序执行以下操作,并且在单击搜索按钮时不显示结果,如果我们单独使用函数 button-pressed() ,它的工作方式如下:

this :1
this :2
this:3
this:4
this:5
the:1
the:2....and so on

我想出现没有多余值的最后一个值,所以请帮助这是我的代码:

<script type = "text/javascript"><!--
function buttonPressed() {
    var searchForm = document.getElementById( "searchForm" );
    var inputVal = document.getElementById( "inputVal" );
    var arr =inputVal.split(" ");
    var counts = {};
    arr.sort();
    for(var i = 0; i< arr.length; i++) {
        var num = arr[i];
        if(counts[num])
            counts[num]=counts[num]+1 ;
        else
            counts[num]=1;

        document.writeln("<table border = \"4\">" );
        document.writeln( "<caption><h3>Search's Results: <h3/></caption>" );
        document.writeln( "<tr><td>"+arr[i]+" :</td><td>" +counts[num] + "</td></tr></tbody></table>" );
    }
} // end function buttonPressed
// --></script>

<form id = "searchForm" action = "">
<h1>The string to search is:<br /></h1>
<p>Enter Sentence  You Wnt To Find The Occurrence Of Each Word In It :
<input id = "inputVal" type = "text" />
<input name = "search" type = "button" value = "Search" onclick = "buttonPressed()" /><br /></p></form>
4

2 回答 2

2

您在计算期间尝试输出的主要问题,您的document.writeln语句在 for 循环中

您需要将它们移出:

for(var i = 0; i< arr.length; i++) {
    var num = arr[i];
    counts[num] = (counts[num] ? counts[num] : 0) + 1 ;
}

document.writeln("<table border=\"4\">");
document.writeln("<caption><h3>Search's Results: <h3/></caption>");
for (var i in counts) {
    document.writeln("<tr><td>"+i+" :</td><td>"+counts[i]+"</td></tr>");
}
document.writeln("</tbody></table>");

注意:请阅读有关htmlencodedocument.writeln函数的信息,您正在执行错误的输出,因为您正在写入文档的末尾,因为您的特定任务是可以的,但通常您需要将输出输出到页面上的特定位置,为此,您需要分配一些 div 的innerHTML

于 2013-10-23T18:10:40.633 回答
2

你也可以使用这个:

"mijn naam is niels, niels is mijn naam".split("niels").length - 1
// Will return 2

哪个会在单词上分裂,你会得到匹配的数量

于 2013-10-23T18:04:26.373 回答