次のようにオブジェクトが定義されているとします。文字列から変換するならJSON.parseを使いますが、結果としてできるオブジェクトは同じです。
JavaScript
1var json = {
2 'http://test.jp/1_1': {
3 'http://www.w3.org/2000/01/rdf-schema#label': [
4 {
5 'value': 'ラベル',
6 'type': 'literal',
7 'lang': 'ja'
8 }
9 ],
10 'http://purl.org/dc/terms/abstract': [
11 {
12 'value': 'アブストラクト。',
13 'type': 'literal',
14 'lang': 'ja'
15 }
16 ]
17 }
18};
以下に3つの方法を挙げます。それぞれにちょっとした違いがあります。
共通していることとして、オブジェクトに複数のプロパティがある場合、どの順番で取り出されるかは保証されていません。しかし、今回のオブジェクトは1段目のプロパティが1つしか無いので、順番を意識する必要はありません。
#for...in
for...in - JavaScript | MDN
JavaScript
1for(var i in json) {
2 console.log(i); //"http://test.jp/1_1"
3}
#Object.keys
Object.keys() - JavaScript | MDN
JavaScript
1console.log(Object.keys(json)[0]); //"http://test.jp/1_1"
- for...inとの違いは、プロトタイプチェーンをたどらないこと
(今回は特にプロトタイプチェーンには触れていないので、for...inと同じ結果が得られます)
#Object.getOwnPropertyNames
Object.getOwnPropertyNames() - JavaScript | MDN
JavaScript
1console.log(Object.getOwnPropertyNames(json)[0]); //"http://test.jp/1_1"
- Object.keysとの違いは、列挙可能ではない(non-enumerable)プロパティ名も列挙すること
(今回は特に列挙不可の設定をしていないので、Object.keysと同じ結果が得られます)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。