내 코드 에는 String 인덱싱 된 몇 가지 사전이 있습니다 ( here 제안 ). 이것은 약간의 즉흥적 인 유형이기 때문에 각 키 (또는 값, 어쨌든 키가 필요한 모든 것)를 반복하는 방법에 대한 제안이 있는지 궁금합니다. 어떤 도움을 주셔서 감사합니다!
myDictionary: { [index: string]: any; } = {};
답변
키 / 값을 반복하려면 루프를 사용하십시오 for in
.
for (let key in myDictionary) {
let value = myDictionary[key];
// Use `key` and `value`
}
답변
<ES 2017 :
Object.keys(obj).forEach(key => {
let value = obj[key];
});
> = ES 2017 :
Object.entries(obj).forEach(
([key, value]) => console.log(key, value);
);
답변
이건 어때요?
for (let [key, value] of Object.entries(obj)) {
...
}
답변
Ian이 언급 한 키 / 값 루프에는 한 가지주의 사항이 있습니다. 객체에 프로토 타입에 속성이 첨부되어있을 수 있으며 in
연산자 를 사용할 때 이러한 속성이 포함됩니다. 따라서 키가 프로토 타입이 아닌 인스턴스의 속성인지 확인해야합니다. 오래된 IE는 indexof(v)
키로 표시 되는 것으로 알려져 있습니다.
for (const key in myDictionary) {
if (myDictionary.hasOwnProperty(key)) {
let value = myDictionary[key];
}
}
답변
모든 사전 / 객체 값을 얻는 가장 짧은 방법 :
Object.keys(dict).map(k => dict[k]);
답변
키를 얻으려면 :
function GetDictionaryKeysAsArray(dict: {[key: string]: string;}): string[] {
let result: string[] = [];
Object.keys(dict).map((key) =>
result.push(key),
);
return result;
}
답변
Ians Answer는 좋지만 키가 업데이트되지 않으므로 let 대신 const를 사용해야합니다.
for (const key in myDictionary) {
let value = myDictionary[key];
// Use `key` and `value`
}