Как проверить несколько элементов в массиве с одним, если с JavaScript? - PullRequest
2 голосов
/ 01 ноября 2010

У меня есть 1 или более элементов в массиве, для этого примера, скажем, они [65, 66, 67] как можно (если это вообще возможно) сделать только один, если условно проверить совпадение.

Например:

var keyArray = [65, 66, 67];
if(e.keyCode == any item in keyArray){
   //Then do this
}

Попробуйте создать плагин jQuery, чтобы пользователь мог сопоставить несколько ключей одному действию. Например. нажатие a, b или c может привести к предупреждению «Вы нажимаете a, b или c»;

Вот мой реальный пример кода, который не работает:

$this.keydown(function(e){
            if(e.keyCode in keySplit){
                if(typeof callback == 'function'){
                    callback();
                    e.preventDefault();
                }

            }
        });

Ответы [ 3 ]

5 голосов
/ 01 ноября 2010

Для этого в jQuery есть метод $.inArray.

Описание: поиск указанного значения в массиве и возврат его индекса (или -1, если не найден).

Или см. in_array функция JavaScript в phpjs.

4 голосов
/ 01 ноября 2010

В современных браузерах у вас есть метод Array.indexOf. Для старых браузеров очень легко создать подобный метод:

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function (searchElement) {
    var len = this.length;
    for (var i = 0; i < len; i++) {
       if (this[i] === searchElement)
         return i;
    }
    return -1;
  };
}

Теперь вы условно определили Array.indexOf, поэтому он будет доступен на любой платформе. Ваш код становится:

var keyArray = [65, 66, 67];
if ( keyArray.indexOf( e.keyCode ) > -1 ) {
  //Then do this
}

обратите внимание, если вы хотите полностью скопировать Array.indexOf, см .: MDC indexOf

1 голос
/ 01 ноября 2010

Оператор «in» видит только ключи, но не значения, и ключи [65,66,67], конечно, [0,1,2]. Поэтому вы должны проверить, используя:


var keyArray = {65:65, 66:66, 67:67};
if (e.keyCode in keyArray) {
 // whatever
}

keyArray также может быть {65: "", 66: "", 67: ""}; опять же, это ключ пары ключ-значение, который имеет значение.

...