JavaScript-根据每种情况,生成数组

JavaScript-根据每种情况,生成数组,javascript,jquery,html,Javascript,Jquery,Html,我的最后一个问题是不使用布尔语跑步一次。我决定我需要布尔值,但不需要太多变量,因为那样会很混乱 假设我有这个: var counter = 0; $(function() { $('#typing').keyup(function() { switch($(this).val().toLowerCase()) { case 'test': // DO THIS EVERYTIME TEST CASE IS CALLED

我的最后一个问题是不使用布尔语跑步一次。我决定我需要布尔值,但不需要太多变量,因为那样会很混乱

假设我有这个:

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++;
        }
    });
});
var计数器=0;
$(函数(){
$('#typing').keyup(函数(){
开关($(this.val().toLowerCase()){
案例“测试”:
//每次调用测试用例时都执行此操作
$('#test')。淡出(“快速”,函数(){
$(this.html(“正确!”).fadeIn(“快速”);
});
//只做一次
计数++;
}
});
});
基本上,它是“完成百分比”应用程序的一部分,用户尝试键入我提供的所有案例。因此,如果用户输入两次测试。。。在第一次运行case
test
时,它将向计数器添加1,但在第二次运行case
test
时,它不会向计数器添加1

我不想在每种情况下都增加很多布尔值,因为那样会很麻烦

明白了吗?:)

我的想法是制作一个数组,根据我添加的每个案例,它会将所有内容添加到一起。所以数组[0]将是case
test
。然后,在第一次尝试时,我将数组[0]设置为1。。然后在每个case数组上创建一个FOR-LOOP,将其相加为total。这是个好主意


唯一的问题是我不知道如何创建每格数组。

一个简单的方法是使用对象文字作为计数器变量,一旦命中一个大小写,就指定值
true

var counter = {};
...
case 'test' : counter[$(this).val()] = true;
或者,检查“案例”是否已存储在普通的旧钻孔阵列中:

var counter = [];
...
case 'test' :
if(!$.inArray($(this).val(), counter)) {
    counter.push($(this).val());
}

按照你的要求做:

var validKeys = ['test', 'testing', '1337'];
var checkedKeys = {};

function getCount() {
    var counter = 0;
    $.each(validKeys, function(index, value) { //jQuery.each, for neat array iteration
        if(checkedKeys[value])
            counter++;
    }); 
    return counter;
}

$(function() {
    $('#typing').keyup(function() {
        var val = $(this).val().toLowerCase();
        if(val == 'test') { //neater than a switch statement, often
            // DO THIS EVERYTIME TEST CASE IS CALLED
            $('#test').fadeOut("fast", function() {
                $(this).html("<span class='green'>That's correct!</span>").fadeIn("fast");
            });
        }
        checkedKeys[val] = true;
    });
});
var validKeys=['test','testing','1337'];
var checkedKeys={};
函数getCount(){
var计数器=0;
$.each(validKeys,函数(索引,值){//jQuery.each,用于整洁数组迭代
如果(选中键[值])
计数器++;
}); 
返回计数器;
}
$(函数(){
$('#typing').keyup(函数(){
var val=$(this.val().toLowerCase();
if(val=='test'){//n比switch语句更简洁,通常
//每次调用测试用例时都执行此操作
$('#test')。淡出(“快速”,函数(){
$(this.html(“正确!”).fadeIn(“快速”);
});
}
checkedKeys[val]=真;
});
});

哦,我明白了。那么,对于每一个真实的案例,我该如何把所有的案例加起来呢?@Dan-我以为你说你实际上不想统计事件,而只是简单地承认它们?我错了吗?数组中的每一个例子都是正确的。。。我想把它们加起来。这是有道理的吗?好吧,那我怎么加起来才能得到总数呢?@Dan-上面的代码确实把总数加起来了(据我所知)。