2017-06-09 4 views
1

私は大学の宿題に取り組んでいます。私はそれで多くの困難を抱えていて、つかの間になっています。私のクラスの仲間は私を助けていないし、インストラクターは応答していません。私はここでいくつかの助けや理解を得ることを望んでいます。私が現在取り組んでいる現在の課題は、今日です:テキスト領域を作成してボタンを分析する

テキストエリアと「分析」ボタンを含むページを作成します。結果領域には、x文字の単語の頻度が表示されます。例えば、「one two three」というテキストは、2つの3文字の単語と1つの5文字の単語を含む。元のデザインを改善すると、カウントを歪ませる可能性のある余分な文字を取り除くことになります。

私はちょうどそれを開始しているので、ここで私が更新するときにコードを追加します。私はHTML部分に問題がないことを知っている、JavaScriptは私の問題になります。私が得たものから、各単語の単語と文字を数える関数が必要になります。しかし、空白や文字を除外する必要があります: '、/。私は前にこのコードを実行していないので、どのように私はjavascriptをフレームする必要があります上の任意の入力が役立ちます。また、彼は同じ文字をいくつ持っているのかをリストアップしたいのではないでしょうか?私はこの権利を読んでいますか?これまで

マイコード:

<!DOCTYPE html> 
<html> 

<body> 

    <textarea id="txtarea"> 
    </textarea> 
    <input type="button" id="analyze" value="Analyze" onclick="myFunction()" /> 

    <p id="demo"></p> 
    <p id="wcnt"></p> 

    <script> 
     function myFunction() { 
      var str = document.getElementById("txtarea").value; 
      var res = str.split(/[\s\/\.;,\-0-9]/); 
      var n = str.length; 
      document.getElementById("demo").innerHTML = "There are " + n + " characters in the text area."; 
      for (var i = 0; i < res.length; i++) { 

       s = document.getElementById("txtarea").value; 
       s = s.replace(/(^\s*)|(\s*$)/gi, ""); 
       s = s.replace(/[ ]{2,}/gi, " "); 
       s = s.replace(/\n /, "\n"); 
       document.getElementById("wcnt").innerHTML = "There are " + s.split(' ').length + " words in the text area."; 
      } 

     } 
    </script> 

</body> 

</html> 

は今、私はそれが各単語多くの単語は文字のx量を持っているか、出力の文字を数えるようにする方法を把握する必要があります。そのような5つの単語は、4文字などを持っています。助言がありますか?

+2

あなたが質問とGoogleの別の部分を分割すると、答えを見つけることができます...それはあなたが学び、それを一緒に置くためのより教育的でしょう。インターネット全体は百科事典です。コードに問題がある場合はお手伝いしますが、まずコードの一部をコーディングしてみてください。 –

+0

こんにちは、私はコーディングしていますが、私は私が立ち往生するつもりであることを知って以来、私はここでも尋ねるだろうと思った。ここにコードを貼り付けることを計画しています。コードを投稿するときに、自分が何をしようとしているのかを既に知っています。私を信じて。私は誰も私のために私の家事をすることを期待していない、ちょうど私がそれを投稿したときに私が問題を抱くかもしれない場所を指摘するだけです。 =) –

答えて

1

ほとんどの場合、JavaScriptのsplit関数をregexで使用して、含めたくない文字をすべて定義する必要があります。結果の配列をループし、各単語の文字を数えます。

var words = document.getElementById("words"); 
 
var analyze = document.getElementById("analyze"); 
 

 
analyze.addEventListener("click", function(e) { 
 
    var str = words.value; 
 
    var res = str.split(/[\s\/\.;,\-0-9]/); 
 
    for(var i = 0; i < res.length; i++) { 
 
     alert(res[i].length); 
 
    } 
 
});
<textarea id="words">This is a test of this word counter thing.</textarea> 
 
<br/> 
 
<button id="analyze"> 
 
    Analyze 
 
</button>

+0

だから、私がこれを読んで得たのは、str.splitが単語ではないものを削除しているだけなので、単語を数えるだけです。次の部分は各単語をループし、単語の文字を数えますか? –

0

あなたのインストラクターは、あなたが単語が同じ文字ではなく、同じ文字数を有することができる方法を一覧表示したくありません。基本アルゴリズム:

  1. 変数にテキスト領域の値を割り当てます。
  2. その文字列値を配列に変換します。 JavaScriptでは、文字クラスを含む正規表現を使用してString splitメソッドを使用してこれを行うことができます。
  3. 各要素の長さを検査してその配列を反復処理します。各要素に対して、プロパティ名が要素の長さである集計オブジェクトのプロパティを増分します。
  4. カウントオブジェクトのプロパティリストを反復処理します。各プロパティ名とその値を結果領域に出力します。
1

var textarea = document.getElementById("textarea"), 
 
    result = {}; // object Literal to hold "word":NumberOfOccurrences 
 

 
function analyzeFrequency() { 
 

 
    // Match/extract words (accounting for apostrophes) 
 
    var words = textarea.value.match(/[\w']+/g); // Array of words 
 
    
 
    // Loop words Array 
 
    for(var i=0; i<words.length; i++) { 
 
    var word = words[i]; 
 
    // Increment if exists OR assign value of 1 
 
    result[word] = ++result[word] || 1; 
 
    } 
 
    console.log(result); 
 
} 
 

 

 
analyzeFrequency(); // TODO: Do this on some button click
<textarea id="textarea"> 
 
    I am working on my college-homework. 
 
    Homework I am having a lot of difficulty with it and getting stuck. 
 
    My class mates are not helping me and the instructor hasn't responded. 
 
    I am hoping I might get some help/understanding here. 
 
</textarea>

Homeworkhomework(小文字)が、私はそれを修正するためにあなたにそれを残しておきます、二つの異なる単語として登録されているかに注意してください - 必要に応じて、いくつかにanalyzeFrequency()トリガーを実装ボタンをクリックします。

関連する問題