オブジェクトと配列を含むネストされたデータ構造があります。情報を抽出する方法、つまり特定または複数の値 (またはキー) にアクセスする方法は?
###例えば:### リーリー items の 2 番目の項目の name
にアクセスするにはどうすればよいですか?
P粉0020233262023-10-10 13:48:33
JavaScript には、複数の値を含めることができるデータ型が 1 つだけあります: Object。 Array は特殊な形式のオブジェクトです。
(通常) オブジェクトの形式は次のとおりです
リーリー配列の形式は
です。 リーリー配列とオブジェクトはどちらも key -> value
構造を公開します。配列内のキーは数値である必要がありますが、オブジェクト内のキーとしては任意の文字列を使用できます。キーと値のペアは "プロパティ" とも呼ばれます。
ドット表記法を使用してプロパティにアクセスできます リーリー
またはブラケット表記 (プロパティ名が有効な JavaScript ではない場合) 識別子名 [仕様]、またはname 変数の値です: リーリー
したがって、配列要素には括弧表記を使用してのみアクセスできます。リーリー
ちょっと待って...JSON はどうですか?JavaScript で JSON を解析しますか? JSON の解析方法は で説明します。 < /p>さらに読む資料
MDN JavaScript ガイド、特にさまざまな部分を読むことをお勧めします
ネストされたデータ構造は、他の配列またはオブジェクトを参照する配列またはオブジェクトです。つまり、その値は配列またはオブジェクトです。このような構造には、ドットまたは括弧表記を連続して適用することでアクセスできます。名前
にアクセスするとします。これを段階的に行う方法を次に示します:
ご覧のとおり、
data
items
属性には次のようにアクセスします:
リーリー
値は配列です。その 2 番目の要素にアクセスするには、括弧表記を使用する必要があります:
リーリー
値はオブジェクトであり、ここでもドット表記を使用して
name
リーリー
また、特に名前にドット表記が無効になる文字が含まれている場合は、任意の属性に括弧表記を使用できます。
リーリー
プロパティにアクセスしようとしていますが、
のメッセージしか表示されません。
リーリー
または
を使用して、オブジェクト/配列の構造を確認します。アクセスしようとしているプロパティが、実際にはネストされたオブジェクト/配列で定義されている可能性があります。 プロパティ名が不明な場合、またはオブジェクト/配列要素のすべてのプロパティにアクセスしたい場合は、 data のすべてのプロパティを反復するには、次のように オブジェクト オブジェクトがどこから来たのか (そして何をしたいのか) に応じて、プロパティが実際にオブジェクトのプロパティであるか、それとも継承されたプロパティであるかを反復ごとにテストする必要がある場合があります。 Object.keys for...in を使用して配列を反復処理することも可能ですが、これを避けるべき理由がいくつかあります。 . for...of #:
リーリー
各反復で、 [Wikipedia]リーリー
プロパティ名が動的で、事前にわからない場合はどうすればよいですか?
for...in
[MDN]# を使用できます。 ## オブジェクトと for
< em>[MDN] 配列をループしてすべてのプロパティ/要素を反復します。
######物体######
Object#hasOwnProperty
を使用できます。 代码>
for...in および hasOwnProperty
の代わりに、
[MDN] を使用できます。 ]
属性名の配列 : を取得します
リーリー
######配列######
data.items array のすべての要素を反復するには、for
ECMAScript 5 に対するブラウザのサポートが増え続けるにつれて、配列メソッド forEach
も興味深い代替案になります。 :
リーリー
ES2015 (ES6) をサポートする環境では、
[MDN]# # を使用することもできます。 # ループ。配列だけでなく、任意の
for...of
は、アクセスまたは使用する「インデックス」なしで、反復可能オブジェクトの次の要素を直接提供します。
データ構造の「深さ」がわからない場合はどうすればよいですか?
不明なキーに加えて、データ構造の「深さ」(つまり、ネストされたオブジェクトがいくつあるか) も不明な場合があります。深くネストされたプロパティにアクセスする方法は、多くの場合、正確なデータ構造に依存します。
しかし、データ構造にバイナリ ツリーの表現などの繰り返しパターンが含まれている場合、解決策には通常 再帰 が含まれます。
次は、バイナリ ツリーの最初のリーフ ノードを取得する例です。
リーリー