如何使用数组中的键码来过滤“keyup”事件侦听器中将哪些键作为输入?

问题描述 投票:0回答:1

我正在尝试构建一个单词克隆,但在尝试仅过滤出字母表作为游戏的键盘输入时遇到了问题。

目前我有一个键盘容器,其中包含每行(“行”类)键(“键”类)和一个 JS 文件的开头,我似乎无法在其中向前移动:

// Keyboard
// Listen for key being released
let key_codes = [81,87,69,82,84,89,85,73,79,80,
                  65,83,68,70,71,72,74,75,76,
                  13,90,88,67,86,66,78,77,8];
document.addEventListener('keyup', (e) => {
    if (e.keyCode in key_codes) {
        console.log(e.keyCode);
    }
});

我已经列出了游戏所有可接受的键码,并尝试添加一个事件侦听器来监视释放的键,但是当我检查“if (e.keyCode in key_codes)”时,我没有得到输出当我应该的时候。

我已经检查了列表元素和 keyCodes 的类型(它们匹配),并尝试在 if 语句之前打印“e.keyCode”,并且它会正确打印我按下的任何键。

我可能在这里遗漏了一些明显的东西,但不知怎的,我无法自己弄清楚这一点。

javascript arrays validation input keycode
1个回答
0
投票

这不是在 javascript 中使用

in
关键字的方式,
in
用于检查对象中是否具有特定属性 在关键字中了解更多信息

如何实现这一点是通过使用

Array.prototype.includes
函数

let key_codes = [81,87,69,82,84,89,85,73,79,80,
                  65,83,68,70,71,72,74,75,76,
                  13,90,88,67,86,66,78,77,8];
document.addEventListener('keyup', (e) => {
    if (key_codes.includes(e.keyCode)) {
        console.log(e.keyCode);
    } else console.log(`${e.keyCode} not in array`);
});

运行上面的代码并自行测试一下

© www.soinside.com 2019 - 2024. All rights reserved.