How should I increase the number of && operators as per the array argument is passed in function?

Viewed 37
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";
    } 
}

It is just limited to two keys means only a combination of two keys. I want multiple combination with less code... But I still don't know how!

1 Answers

You can use every

The every() method tests whether all elements in the array pass the test implemented by the provided function. It returns a Boolean value.

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";
    } 
}

Related