如何根据函数中传递的数组参数增加&&运算符的数量?

sxpgvts3  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(296)
function ShortCutKey(elemKey, keyCode, func) {
    var elemId = document.getElementById(elemKey);
    function RunFuncShorcut(enKey, numkeys) {
        if (numkeys > 1) {
            if (enKey.code == keyCode[0] && enKey.code == keyCode[1]) func();
        } else{
            if (enKey.code == keyCode[0]) func();
        }
    }
    if (Array.isArray(keyCode)){
        if (keyCode.length > 1) {
            elemKey.addEventListener("keyup", function() {
                RunFuncShorcut(keyCode, 2);
            });
        } else{
            elemKey.addEventListener("keyup", function() {
                RunFuncShorcut(keyCode, 1);
            });
        }
    }
    else{
        throw "2nd Argument must be an Array";
    } 
}

它仅限于两个键意味着只有两个键的组合。我想用更少的代码进行多个组合。。。但我还是不知道怎么做!

7rtdyuoh

7rtdyuoh1#

你可以用每一个
这个 every() 方法测试数组中的所有元素是否通过所提供函数实现的测试。它返回一个布尔值。

function ShortCutKey(elemKey, keyCodes, func) {
    const elemId = document.getElementById(elemKey);
    function RunFuncShorcut(enKey) {
        if (keyCodes.every(keyCode => keyCode === enKey.code)) func();
    }
    if (Array.isArray(keyCodes)){
        elemKey.addEventListener("keyup", function() {
            RunFuncShorcut(keyCodes);
        });
    }
    else{
        throw "2nd Argument must be an Array";
    } 
}

相关问题