我的最后一个问题要求在不使用 bool 值的情况下运行一次。我决定我需要 bool 值而不是很多变量,因为那样会很困惑。
假设我有这个:
var counter = 0;
$(function() {
$('#typing').keyup(function() {
switch($(this).val().toLowerCase()) {
case 'test':
// DO THIS EVERYTIME TEST CASE IS CALLED
$('#test').fadeOut("fast", function() {
$(this).html("<span class='green'>That's correct!</span>").fadeIn("fast");
});
// DO THIS ONCE AND ONLY ONCE
count++;
}
});
});
基本上,它是“完成百分比”应用程序的一部分,用户尝试输入我提供的所有案例。因此,如果用户键入 test 两次...在 case test
的第一次运行中,它会将计数器加 1,但在 case test
的第二次运行中,它不会添加反击。
我不想让它为每个案例添加很多 bool 值,因为那样会很困惑。
明白了吗? :)
我的想法 是制作一个数组,并且根据我添加的每种情况,它会相加。所以 array[0] 将是 case test
。然后我在第一次尝试时将 array[0] 设置为 1.. 然后在每个 case 数组上创建一个 FOR-LOOP 以加总。这是个好主意?
唯一的问题是我不知道如何制作每个案例数组。
最佳答案
一个简单的方法是使用一个对象字面量作为计数器变量,一旦命中一个 case 就赋值 true
:
var counter = {};
...
case 'test' : counter[$(this).val()] = true;
或者,检查 'case' 是否已经存储在一个普通的旧数组中:
var counter = [];
...
case 'test' :
if(!$.inArray($(this).val(), counter)) {
counter.push($(this).val());
}
关于JavaScript - 根据每种情况,制作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692552/