如何处理非英文键码?

问题描述

我正在用 JavaScript 创建刽子手游戏。键码是控制台日志中字母的等效数字。

如果我只想使用 [a-z] 字母键,我必须将其设置为 65 到 90。

但我也有非英文字母

英文字母的键码为 = [186,191,219,220,221]。如何包含这些字母?

window.addEventListener('keydown',e => {
    // console.log(e.keyCode);
    if(e.keyCode >= 65 && e.keyCode <=90) {
        const letter = e.key;
        console.log(e.keyCode)

        if (selectedWord.includes(letter)) {
            if(!correctLetters.includes(letter)) {
                correctLetters.push(letter);
                displayWord();
            } else {
                showNotification();
            }
        } else {
            if(!wrongLetters.includes(letter)) {
                wrongLetters.push(letter);

                updateWrongLettersEl();
            } else {
                showNotification();
            }
        }

    }
});

解决方法

您可以使用array.indexOf(value),它将在数组中搜索值并返回找到的值的位置。如果它没有找到该值,您将得到 -1

// set up an array of the keys
var nonEnglishKeys = [186,191,219,220,221];

// then in your if statement,check for indexOf()
// if it doesn't equal -1,that means it's one of your keys
if((e.keyCode >= 65 && e.keyCode <=90) || nonEnglishKeys.indexOf(e.keyCode) !== -1) {
...