0

次のようなオブジェクトの場合:

var a = {"a":"value1", "b": "value2", "c":"value3"};

要素の名前を知らなくても、オブジェクトの2番目の要素の値を取得するにはどうすればよいですか?変数n3などについても同じです。

4

3 に答える 3

5

オブジェクトの仕様に従って、オブジェクトのプロパティには定義された順序がありません。

いつか戻ってきてこのプロジェクトを修正したいと思っているなら、次のような愚かなことをすることができます...

var theThirdForAnyValueOfThird = a[Object.keys(a)[2]];
于 2012-11-22T04:43:52.730 に答える
2

言語仕様(セクション4.3.3および12.6.4を参照)によれば、オブジェクトのプロパティは順序付けられていないため、「2番目の要素」はありません。これは、配列の数値プロパティ(添え字)とは異なります。

特定の順序をキーに関連付ける場合の最善のアプローチは、キー自体を配列に格納し、添え字でアクセスすることです(を使用しないfor...in)。

すべての主要なブラウザ実装は、プロパティが追加された順序でプロパティを繰り返します。これはお勧めできませんが、次の方法で解決できる可能性があります。

a[Object.keys(a)[1]]

「2番目の要素」の値を取得します。これは実装の事故に依存しており、どこでも機能することが保証されているわけではないことに注意してください。基本的に、これを行うと起こるのを待っている事故です。

于 2012-11-22T04:43:33.870 に答える
0

アレイに切り替えることはできず、切り替える必要があります。回避策として、私は次のような奇妙なことをしています。

var a = [{"a":"value1"}, {"b": "value2"}, {"c":"value3"}];
于 2012-11-22T04:51:24.987 に答える