javascript - 计算某些字符串值的更好方法?

标签 javascript jquery

我希望就我正在使用的脚本获得一些建议。我正在开发一个计算句子中众多元素的程序,现在我只是计算元音的总数。我有一个工作脚本,但我想知道,是否有比我目前拥有的更好的方法来做到这一点?

HTML

<div id="test">
    <input type="text" />
    <p></p>
    <p></p>
</div>

JS

$(document).ready(function(){
    var key;
    var vowels;
    $("#test input[type='text']").on("keydown", function(e){
        key = e.target.value;
        $("#test p:nth-of-type(1)").text(key);
    })
    $(this).on("keydown", function(e){
        vowels = [];
        if(e.keyCode == 13){
            console.log($("#test input[type='text']").val());
            for(var i = 0; i < $("#test input[type='text']").val().length; i++){
                switch($("#test input[type='text']").val()[i]){
                    case "a":
                        vowels.push($("#test input[type='text']").val()[i]);
                        break;
                    case "e":
                        vowels.push($("#test input[type='text']").val()[i]);
                        break;
                    case "i":
                        vowels.push($("#test input[type='text']").val()[i]);
                        break;
                    case "o":
                        vowels.push($("#test input[type='text']").val()[i]);
                        break;
                    case "u":
                        vowels.push($("#test input[type='text']").val()[i]);
                        break;
                }
            }
            $("#test p:nth-of-type(2)").text("There are " +vowels.length +" vowels.");
        }
    })
})

这是Working Pen .

最佳答案

实际上,您可以进一步简化代码并完全删除 switch 语句。

在这种方法中,我使用 .match(/[aeiou]/gi) 生成元音数组。 g flag将匹配所有出现的情况,并且 i flag将忽略角色的大小写。

Updated Example

$('#test :input').on('input keydown', function(e) {
  var input = this.value,
      match = input.match(/[aeiou]/gi),
      count = match ? match.length : 0;

  $('#test p').eq(0).text(input);

  if (e.keyCode === 13) {
    $('#test p').eq(1).text('There are ' + count + ' vowels.');
  }
});

关于javascript - 计算某些字符串值的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790457/

相关文章:

javascript或json表达式解析json以获得某个值

javascript - 如何将 oData 结果中的附加字段推送到 JavaScript 数组

javascript - Js 按钮只能工作一次?

javascript - Firefox 插件 - 无法触发任何类型的点击事件

javascript - window.onload 与 $(document).ready()

javascript - 变量php mysql的onclick事件警报值

JavaScript/Chrome 扩展

javascript - jquery ajax 中的动态内容加载

jQuery ajax 加载 - 显示加载图像一分钟。 1秒的

php - JavaScript 传递变量并从 PHP 页面检索输出