У меня есть ассоциативный массив в Javascript:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
Как мне получить ключи этого словаря? т.е. я хочу
var keys = ["cats", "dogs"];
Отредактируйте 7 лет спустя: просто чтобы получить правильную терминологию - в Javascript не существует такого понятия, как «ассоциативный массив» - технически это просто object
объект, и нам нужны именно объектные ключи.
javascript
arrays
Simon_Weaver
источник
источник
Ответы:
Ты можешь использовать:
Object.keys(obj)
Пример:
См. Ссылку ниже для поддержки браузера. Поддерживается в Firefox 4.20, Chrome 5, IE9. Ссылка ниже содержит фрагмент кода, который вы можете добавить, если
Object.keys()
он не поддерживается в вашем браузере.https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
источник
Попробуй это:
hasOwnProperty
необходим, потому что можно вставить ключи в объект-прототипdictionary
. Но вы, как правило, не хотите, чтобы эти ключи были включены в ваш список.Например, если вы делаете это:
и затем сделайте
for...in
циклdictionary
, вы получитеa
иb
, но вы также получитеc
.источник
keys.push(key);
. Вы просто извлекаете (и, следовательно, объявляете это) из глобального пространства имен. :)Это за ... в заявлении .
источник
dictionary.hasOwnProperty(key)
иначе вы можете получить методы из цепочки прототипов.Просто быстрое примечание, будьте осторожны с использованием for..in, если вы используете библиотеку (jQuery, prototype и т. Д.), Так как большинство из них добавляют методы к создаваемым объектам (включая словари).
Это будет означать, что когда вы зацикливаете их, имена методов будут отображаться как ключи. Если вы используете библиотеку, посмотрите документацию и найдите перечислимый раздел, где вы найдете правильные методы для итерации ваших объектов.
источник
Простой способ JQUERY.
Это то, что я использую
DictionaryObj как объект словаря javascript, который вы хотите пройти. значение, ключом конечно же является их имена в словаре.
источник
Я в настоящее время использую ответ Роба де ла Круса
и в файле, загруженном ранее, у меня есть несколько строк кода, заимствованных из других источников в Интернете, которые охватывают случай старых версий интерпретаторов сценариев, в которых нет встроенных Object.keys.
Я думаю, что это лучшее из обоих миров для больших проектов: простой современный код и обратно совместимая поддержка старых версий браузеров и т. Д.
По сути, это ставит решение JW в функцию, когда Object.keys (obj) Роба де ла Круса недоступен изначально.
источник