2017-01-26 7 views
-1

キーが 'abc'で、値が 'true'であると仮定して、 'this.abc'にアクセスできるはずです。これはTypescript配列値をクラス変数に変換する方法

Class A { 
    public someFun(){ 
     this.external.getData().subscribe((externalStream: Array<someType>) => { 
      for(let i:number = 0; i < externalStream.length; i++){ 
       console.info(externalStream[i].key); // This should be class variable 
       console.info(externalStream[i].value); // This should be above variable's value 

      } 
     }) 
    } 
} 

答えて

2

はこれを試してみてください、私はtrueを返す必要があります。

Class A { 
    public someFun(){ 

     const obj = this; 

     this.external.getData().subscribe((externalStream: Array<someType>) => { 
      for(let i:number = 0; i < externalStream.length; i++){ 
       obj[externalStream[i].key] = externalStream[i].value; 
      } 
     }) 
    } 
} 
+0

恐ろしい:だろう、あなたの場合は

let value: { [key: string]: boolean }; value['abc'] = true; for (var key in value) { console.info(key); console.info(value[key]); } 

:だから、辞書の種類でこれを行います!これは私が探していたものです!、ありがとうございます:) –

0

活字体を使用すると、辞書の種類(と呼ばれることもあるハッシュマップ)を作成することができます。これは、このJavaScriptコードが不可能な活字体でタイプセーフな性質のためにされています。タイプセーフなアプローチのために

var value = {}; 
value.abc = true; 
for (var key in value) { 
    console.info(key); 
    console.info(value[key]); 
} 

、あなたは、コンパイル時にabc財産の存在について知っておく必要があるでしょうあなたはしばしばそれをしません。

class A { 
    public someFun(){ 
     this.external.getData().subscribe((externalStream: Array<{ [key: string]: boolean }>) => { 
      for(let i:number = 0; i < externalStream.length; i++){ 
       for(let key in externalStream[i]) { 
        console.info(key); 
        console.info(externalStream[i][key]); 
       } 
      } 
     }) 
    } 
} 
関連する問題