我希望就正在使用的脚本获得一些建议。我正在开发一个程序,该程序计算句子中的许多元素,而现在我只计算总数中的元音。我有一个工作脚本,但我想知道,是否有比我到目前为止更好的方法?
的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.');
}
});