保持按键的历史/顺序

时间:2013-05-13 21:33:51

标签: javascript arrays sequence

我有一个带键盘组合的数组,这应该验证按照数组示例

的顺序完全按键
var listkeys = ['left', 'right', 'bottom', 'top'];

if(validate key){
    continue
}

如果错误按顺序按箭头的顺序排列,那么数组的顺序很重要,因为我不再继续发送错误

我是javascript的新手,希望我能帮助万分感激

1 个答案:

答案 0 :(得分:1)

通常情况下,我不会回复要求Do-It-All解决方案的帖子,但我写出来并且不希望它浪费掉。这是一个小东西来帮助你入门。

// Valid combination of keys
var valid_combo = ['left', 'right', 'bottom', 'top']; 

// Stack that stores the last 4 key inputs, including non-arrow keys
var history = [];  

// Maps arrow key direction strings to char code
var keys = []; 

keys[37] = 'left';
keys[38] = 'top';
keys[39] = 'right';
keys[40] = 'bottom';

$(window).keyup(function(e) {

    var key = e.which;

    if (key >= 37 && key <= 40) 
    {
        history.push(keys[key]);
    }
    else
    {
        history.push("derp");
    }

    if (history.length > 4) history.shift();

    // Array equality using Option 1 - http://stackoverflow.com/a/10316616/773702
    if (JSON.stringify(valid_combo) == JSON.stringify(history)) 
    {
        console.log("Valid key combination");
    }
});

See it in action on jsFiddle