JavaScript - 根据每种情况,制作数组

标签 javascript jquery html

我的最后一个问题要求在不使用 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/

相关文章:

javascript - nodejs child_processes.exec 无法返回 'nohup' 命令

javascript - 如何在 JavaScript 中重写自定义 Array.reduce() 中的 Array.every() ?

jquery - 使用单选按钮控件和 jquery 控制链接首选项

javascript - 以天、小时、分钟、秒为单位的 Javascript 倒数计时器

Javascript 通过简单的递归函数通过引用传递数字问题

javascript - 将数组值添加到隐藏的表单字段

javascript - jQuery 立即验证

html - 你如何在 flexbox 中居中内容

javascript - 你将如何使用 JS 组织 UI 状态?

html - Flexbox 样式化一些标注文本