Получение списка ключей ассоциативного массива

Измените function() на function(e), и нажатая клавиша находится в e.key

(после фрагмента запуска нажмите на белый прямоугольник под кнопкой запуска и нажмите клавиши)

[ 119]
var shouldHandleKeyDown = true;
document.onkeydown = function(e) {
  if (!shouldHandleKeyDown) return;
  shouldHandleKeyDown = false;
  console.log(e.key);
      // HANDLE KEY DOWN HERE
}

document.onkeyup = function(){
  shouldHandleKeyDown = true;
}

255
задан Simon_Weaver 28 October 2016 в 04:36
поделиться

3 ответа

Попробуйте это:

var keys = [];
for (var key in dictionary) {
  if (dictionary.hasOwnProperty(key)) {
    keys.push(key);
  }
}

hasOwnProperty необходим, потому что это возможно к клавишам Insert в объект прототипа dictionary. Но Вы обычно не хотите те ключи, включенные в Ваш список.

, Например, если Вы делаете это:

Object.prototype.c = 3;
var dictionary = {a: 1, b: 2};

и затем делают for...in цикл более чем dictionary, Вы доберетесь a и b, но Вы также доберетесь c.

380
ответ дан JW. 23 November 2019 в 02:45
поделиться
for (var key in dictionary) {
  // do something with key
}

Это для.. в операторе .

183
ответ дан wombleton 23 November 2019 в 02:45
поделиться

Просто небольшое примечание, будьте осторожны при использовании for..in, если вы используете библиотеку (jQuery, prototype и т. Д.) .), так как большинство из них добавляют методы к созданным объектам (включая словари).

Это будет означать, что когда вы перебираете их, имена методов будут отображаться как ключи. Если вы используете библиотеку, просмотрите документацию и найдите перечислимый раздел, где вы найдете правильные методы для итерации ваших объектов.

16
ответ дан 23 November 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: