2017-01-07 14 views
1

私はTypeScriptでangle2 appを構築していますが、問題が発生しました(angular2とtypescriptではnoobです)。 From an array of objects, extract value of a property as arrayしかし、私はJavaScriptを使用していないことから、提供するソリューションは非常に有用ではありません(またはそれをある?)オブジェクトの配列からプロパティの値を取得

私はAPIからJSONオブジェクトを取得し、単純にそれらを保存しています:

問題はこれに同じです配列:

constructor(private namelistService: NameListService) { } 

getAllDevices(){ 
this.namelistService.getDevices() 
.subscribe(
    data => this.devices = data, 
    error => console.log('Server error'), 
); 
} 

も、私の単純なサービス:このようなオブジェクトが得られ

constructor(private http:Http){} 

getDevices(): Observable<any>{ 
    return this.http.get("http://link-to-api") 
    .map((res: Response) => res.json()) 
    .catch((error: any) => Observable.throw(error.json().error || 'Server error')); 
} 

(私は値を削除):

{ 
"_id": "", 
"info": { 
    "device_id": , 
    "device_name": "", 
    "uid": "", 
    "firmware": "", 
    "hardware": "", 
    "description": "" 
}, 

私がやりたいすべてが、アレイ内のすべてのオブジェクトから_idの値を取得し、別々のアレイに保存することです: ARR2 = [ID1、ID2、ID3、ID4、...]

+2

あなたが言及問題の解決(使用して[Array.prototype.map](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map) )はあなたが必要とするものです。 Typescriptはjavascriptのスーパーセットです。つまり、jsソリューションもtsソリューションです。型を追加することはできますが、コンパイラはほとんどの場合型をそれ自体で推論するので、おそらく必要ありません。 –

+0

素早い応答に感謝します。それを試してみます – avokrado

答えて

0

あなたはtypescriptはjavascript自体にコンパイルされているので、かなり多くのjavascriptコードをtypescriptコード内で使用できます。

constructor(private namelistService: NameListService) { } 

resultArray:any; 

getAllDevices(){ 
    this.namelistService.getDevices() 
    .subscribe(
    (data) => { 
     this.devices = data; 
     this.resultArray = this.devices.map(function(a) {return a["_id"];}); 

    }, 
    error => console.log('Server error'), 
); 
} 
+0

ありがとう、魅力のように動作します。私は今ちょっと愚かだと感じています:) – avokrado

+0

@avokrado私たちはすべてそこに行ってきました。 – echonax

関連する問題