2017-05-01 6 views
-1

オブジェクトの値を動的に取得したい。オブジェクトは次のとおりです。角で文字列連結4.0.3

myObj = { 
person1:{name:"John Doe", age:"46"}, 
person2:{name:"Peter Deer", age:"36"}, 
person3:{name:"Ben Boar", age:"21"} 
} 

オブジェクトから目的の名前を取得する機能があります。ここでは機能があります:私はOBJKEYとして1を渡した場合、私はしたい

showPersonName(objKey: number) { 
console.log(this.myObj + 'person' +objKey.name); 
} 

結果はジョン・ドウを表示することですが、Visual Studioのコードは、私が何を行うことができ、

Property 'name' does not exist on type 'number'. 

をしてください示して?私はこれで苦労した。

+0

完全なコードを入力してください。プランカが役立つだろう。 –

+0

あなたのオブジェクトで参照しようとしているこの番号は何ですか?このオブジェクトキー1とは何ですか?あなたのオブジェクトにそのようなキーはありません。 – Alex

答えて

0

あなたは

fetchMyObj(objKey: number) { 

objKeyを定義するには、数あると、どのようにそのname

アップデート1を検索することができます。

showPersonName(objKey: number) { 
    console.log(this.myObj.find(obj =>{ return obj.age:objKey})) 
} 

オブジェクト形式

myObj = [{name:"John Doe", age:46}, 
     {name:"Peter Deer", age:36}, 
     {name:"Ben Boar", age:21}]; 

PLUNKER

+0

John Doeを取得するには、 console.log(this.myObj.person1.name)と同じくらい簡単です。 しかし私は任意の人物オブジェクトから名前を得ることができるように私の関数に数値を渡すことができることによってそれを動的にフェッチしたいと思います。 – Benny64

+0

あなたの構文は間違っています。 – Aravind

+0

私は新しい角度から私を入れてください。 – Benny64

0

Oh my!私の問題は、連結の不適切な使用でした。私はここで助けを見つけました:JavaScript object: access variable property by name as string 私の場合、角括弧を使用することになっていました。

console.log(this.myObj['person' + objKey].name); 

それが私の問題を解決しました。私は無知を耐え忍んでくれた皆様(特に@Aravind)に感謝しています。