2012-01-15 5 views
0

linkedIn JavaScript APIから返された値を適切に解析する方法を理解しようとしています。JavaScriptのオブジェクトパラメータにアクセスする方法

現時点では、返されたオブジェクトをループスルーして出力するために、次のコードを使用しています。

for(var position in profile.positions) 
{ 
    profHTML = profHTML + profile.positions[position]; 
} 

それを考え出すへの道の結果(私を取得している部分がある:

11[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] 

基本的に返される最初のものであるように思わオブジェクトのその#()し、各

Chromeでコンソールログを作成したときに返される情報によると、このコードでは "company"という名前のオブジェクトを含むオブジェクトの配列が返されます。会社には4つの属性( "id"、 "industry" 、 "name"、 "type")

私はそのprofile.positionsを収集します[ポジション]は返された要素への参照ですが、ループ中に会社のオブジェクトと属性にアクセスする構文はわかりません。

また、オブジェクトの数を返す最初のループでフィールドを参照しようとするのを避けるのがベストプラクティスであるかどうかもわかりません。

ご協力いただきありがとうございます。

+1

あなたは完全なJSON出力が返さ与えることはできますか?あなたが描いている構造を正確に推測するのは難しいです。また、配列の 'for'-' in'ループを使用しないでください:http://bonsaiden.github.com/JavaScript-Garden/#array.general – Domenic

+0

返されるJSON出力の完全な出力方法を教えてください。私は投稿することを嬉しく思うでしょう。 –

+0

それを質問に貼り付けてください。 –

答えて

2

開始するには、for...in loopではなくregular for loopを使用して配列を反復処理します。今

var positions = profile.positions, 
    position; 

for(var i=0; i<positions.length; i++) 
{ 
    position = positions[i]; 
    profHTML = profHTML + position; 
} 

、ちょうどmember operator.または[])を使用し、positionの特性の一つにアクセスするには:

var positions = profile.positions, 
    company; 

for(var i=0; i<positions.length; i++) 
{ 
    company = positions[i].company; 
    console.log(company.id, company.industry, company.name, company.type); 
} 
+2

私はそれが配列だとは思わない、配列の '.length'は列挙できません。おそらくカスタム作成された配列のようなオブジェクトです(例えば '{0:0、length:1}')。 'for'ループが使われるはずですが、同じことがまだ適用されます。 – Esailija

+0

また、各繰り返しにアクセスするのではなく、常に配列の長さをキャッシュすることを忘れないでください。違いはあまりないようですが、それはそうです。証明のためにhttp://jsperf.com/jquery-each-vs-for-loops/2を参照してください。 – GregL

+1

私がリンクしているjsPerfテストの統計によると、1つまたは2つの特定のバージョンのブラウザでは、長さをキャッシュするのが遅くなります。より多くの可能性が高い結果は、ほとんどのブラウザにとってより高速になるということです。 for(for)とfor(var i)の区別ほど重要ではないことに同意しますが、サンプルコードに含めると、IMHOのベストプラクティスを促進するのに役立ちます。 – GregL

関連する問題