TypeScript, 사전을 통한 반복 있습니다 ( here 제안

내 코드 에는 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`
}