В моем коде у меня есть пара словарей (как предложено здесь ), которые проиндексированы в виде строки. Из-за того, что это что-то вроде импровизированного типа, мне было интересно, есть ли какие-нибудь предложения о том, как я смогу пройтись по каждому ключу (или значению, все, для чего мне все равно нужны ключи). Любая помощь приветствуется!
myDictionary: { [index: string]: any; } = {};
javascript
html
typescript
ben657
источник
источник
for (var key in myDictionary) { }
? Внутри цикла вы будете использовать,key
чтобы получить ключ иmyDictionary[key]
получить значениеОтветы:
Чтобы перебрать ключ / значения, используйте
for in
цикл:источник
Object.keys(target).forEach(key => { let value = target(key); /* Use key, value here */ });
. Если вы должны показать этот метод, хотя бы упомяните риски и лучшие альтернативы для тех, кто еще не знает лучше.<ES 2017 :
> = ES 2017 :
источник
Object.entries
работать на TypeScriptКак насчет этого?
источник
key
вообще игнорировать , просто оставьте это поле пустым[ , value]
. (Спасибо за комментарий к этой проблеме .)Есть одно предостережение о цикле ключ / значение, о котором говорил Ян. Если возможно, что у Объектов могут быть атрибуты, связанные с их Прототипом, и когда вы используете
in
оператор, эти атрибуты будут включены. Поэтому вам нужно убедиться, что ключ является атрибутом вашего экземпляра, а не прототипа. Старые IE известны тем, чтоindexof(v)
появляются в качестве ключа.источник
key
иvalue
может бытьconst
.hasOwnProperty
проверку из целевого объекта, вместо этого сделайте следующее:...if (Object.prototype.hasOwnProperty.call(myDictionary, key))...
Иначе, если вы используете eslint сno-prototype-builtins
правилом, оно выдаст ошибку.Кратчайший способ получить все значения словаря / объекта:
источник
Чтобы получить ключи:
источник
Ответ Ians хорош, но вы должны использовать const вместо let для ключа, потому что он никогда не обновляется.
источник