2017-11-22 10 views
-4

私はオブジェクトに変換するとき、それは次のようになっていることをいくつかのJSONを持っている:私はそれが配列に格納されているデータへのアクセスは、[Nodejs]

{ 'SOME RANDOM STRING': { 'Article Headline': 'headline', 'Article Image URL': 'image url', 'Article Published Date': 'date', 'Article URL': 'article url', 'Category': 'mental illness,', 'Location': 'place', 'Source Name': 'source' } }

resultsと呼ばれます。 Location内の値にはどのようにアクセスできますか?result.locationは機能しません。

+2

このISN」を持つオブジェクトとして定義されJSONを有効にします。これまでに試したコードをご提供ください。 –

+1

@ kern-elliottあなたはresult.locationが機能しないと言っています。あなたは結果を意味しましたか?場所は機能しませんか? –

+0

@RobertMennellはフォーマットの変更などありがとうございました。あなたの質問に対する答えははいです –

答えて

0

JSONの場合は、配列に変換する必要はありません。以下のように直接解析することができます。

var obj = { 
'-KzZaDXhWRwdzfKUf5tl': 
{ 'Article Headline': 'headline', 
    'Article Image URL': 'image url', 
    'Article Published Date': 'date', 
    'Article URL': 'article url', 
    'Category': 'mental illness,', 
    'Location': 'place', 
    'Source Name': 'source' } 

}

console.log(obj['-KzZaDXhWRwdzfKUf5tl'].Location); 

上記プリントが画面に置きます。

+0

okですが、私はオブジェクトにキーがわからない場合、どのようにオブジェクトにアクセスできますか?それは配列を使用する私の推論でした –

+0

JSONオブジェクトのようなことはありません。 JS ObjectまたはJSONのいずれかです。 – peteb

+0

キーを知っていれば、これは疑問にもなりそうです –

0

オブジェクトへのパスはresults[0]['RANDOM STRING'].locationですが、RANDOM STRINGがわからないため、ネストされたオブジェクトにアクセスするために非参照メソッドを使用することをお勧めします。

ありがたいことに、最新のバージョンのNodeJS/Javascriptには、これを行うための多くのツールがあります。

Array.prototype.map(function(item, index, array), context)あなたが望む機能のようです!配列の各要素に適用される関数の戻り値に基づいて、新しい配列を作成します。

その後、あなたはそれがNodeJS 7.10以上で利用可能だ示し、Object.keysのために、それはまで遡って利用可能であることを示しObject.valuesのためのノードグリーンのチェック

// array of keys, useful for looking for a specific key 
Object.keys(someReallyObtuseObject) 

// array of VALUES! Awesome for looking for a specific data type 
Object.values(someReallyObtuseObject) 

のようなオブジェクト自体に内蔵され、他のツールを使用して、各オブジェクトを変更することができます4.8.6として!

これらはオブジェクトを配列に変換することを忘れないでください。その後、forEach、フィルター、マップ、およびその他の多くの配列メソッドを使用してデータにアクセスできます。


アン例

私は結果

const results = [{...},{...},...]; 

と呼ばれるデータベースから配列を持っていると言う私は

// I will either find the result, or receive undefined 
let result = results.filter(r => r[key] == identifier)[0]; 

を知っている識別子で結果を見つけたいがで私の結果は、オブジェクトには "関連する投稿"と呼ばれるキーがあり、キーはそれぞれのリレー用の一意のIDであるオブジェクトですエドポスト。私はアクセスがポストを述べたいが、私は彼らの固有のIDを知らないので、私はそれが簡単に

// This gives me an array of related posts with their ID now nested inside them 
let relatedPosts = Object.keys(result['related posts']).map(k => { 
    let r = result['related posts'][k]; 
    r.id = k; 
    return r; 
}); 

は今、私は簡単に私の関連する投稿の上に行くことができ、処理するために配列に変換したい、と私投稿のIDを知る必要はありませんでした。私はconsole.logに各投稿をしたいとしましょう(あなたは本当にこれをしたくないでしょう)

簡単!


実施例2は、ユーザーの配列から位置を取得

ユーザはキー '第一'、 '最後'、 '場所'

const users = [{...},{...},...] 
let locations = users.map(user => user.location) 
関連する問題