2017-07-21 6 views
0

により、配列内のオブジェクトを取得 が...私はこのようなコレクションを持っているキーの名前ではなくインデックス

var data = { 
    "buckets": [ 
     { 
      "key": "ia-Business", 
      "doc_count": 88 
     }, 
     { 
      "key": "ia-Health_Sciences_and_Allied_Health", 
      "doc_count": 58 
     }, 
     { 
      "key": "ia-Media_Communications_and_Creative_Arts", 
      "doc_count": 40 
     }, 
     { 
      "key": "ia-Information_Technology", 
      "doc_count": 35 
     } 
    ] 
}; 


alert(data.buckets[0].doc_count); 

はそれが ia-Businesskeyプロパティを持つオブジェクトのプロパティ doc_countの値を取得することは可能ですか?

答えて

1

bucketプロパティに配列が含まれています.JavaScriptでは、配列内のオブジェクトにプロパティ値で簡単にアクセスできません。

あなたはたとえば、bucketあなたが探している見つけるために、オブジェクトの配列を反復処理する必要があります:findWhereメソッドを使用して、代わりに

var desiredBucket; 

for (var i = 0; i < data.buckets.length; i++) { 
    var bucket = data.buckets[i]; 
    if (bucket.key === 'ia-Business') { 
     desiredBucket = bucket; 
     break; 
    } 
} 

console.log(desiredBucket.doc_count); 

が、あなたはjavascriptのunderscoreライブラリを使用することができます。

var desiredBucket = _.findWhere(data.buckets, { key: 'ia-Business' }); 

配列内のオブジェクトのプロパティで一致する配列を検索し、最初の結果を返します。それは私が探していたまさにです@Sneaksta

+1

おかげのように、見つけます... – Slyper

1

現在、bucketsは基本的に余分なステップを持つオブジェクトです。これらの余分なステップを削除すると、あなたはキーで直接あなたのエントリにアクセスできるようになります:

const onJSON = { buckets: { 
    "ia-Business": 88, 
    "ia-Health_Sciences_and_Allied_Health": 58 
    // ... 
}}; 

それとも、あなたはドキュメント数よりも多くを保存するために必要と予想される場合は、このアプローチは、もう少し拡張可能になります。

const onJSON = { buckets: { 
    "ia-Business": { doc_count: 88 }, 
    "ia-Health_Sciences_and_Allied_Health": { doc_count: 58 } 
    // ... 
}}; 
3

使用アレイ#は

buckets.find(bucket => bucket.key === 'ia-Business') 
関連する問題