javascript - 创建文本区域和分析按钮

标签 javascript css html

我正在做大学作业。我遇到了很多困难并陷入困境。我的同学没有帮助我,老师也没有回应。我希望我能在这里得到一些帮助/理解。我当前正在完成且今天到期的作业是:

创建一个包含文本区域和“分析”按钮的页面。结果区域将显示 x 个字符的单词的频率。例如,文本“一二三”包含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个字符等等。有什么建议吗?

最佳答案

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() 在单击某个按钮时触发。

关于javascript - 创建文本区域和分析按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44465009/

相关文章:

javascript - 如何存储单击按钮的次数?

html - 如何使用CSS获取要打印的背景图像?

javascript - xmlhttpreqeust 在 post/get 中失败但在常规表单提交中没有

javascript - 以excel格式导出时如何在ajax中指定文件名

html - 调整浏览器窗口的大小会导致表格单元格内出现奇怪的行为

css - 响应式 div - 文本环绕 div。最小化时可以堆叠吗?

javascript - VueJS 在主文件中导入本地和外部脚本和 css 文件

javascript - 根据下拉选择显示多个 div

javascript - Vue.js 和 Node.js 开发环境中的测试 session

html - 如何在 Bootstrap block 之间设置更多空间?