1

オブジェクト内の場所によってオブジェクトをどのように識別しますか。

myObj.b = 2 

私は何かのように行くことができmyObj[1] to show 2 alsoますか?

var myObj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5,
    f: 6
}
4

2 に答える 2

8

いいえ、これは不可能です。オブジェクトは順序付けられていないため、オブジェクトプロパティには位置がありません。

次のいずれかを選択する必要があります。

  • [0..length)配列:範囲から順番に連続したキー。
  • オブジェクト:任意のキー、順序は保証されません。

考えられる回避策は、オブジェクトと配列の両方を作成し、そのオブジェクトをキーベースのアクセスに使用し、配列をインデックスベースに使用することです。次に、配列を使用して、特定の値のインデックスを取得できます。

于 2012-07-16T08:35:55.393 に答える
2

いいえ、myObj[1]は未定義になります。オブジェクトリテラルはハッシュマップ(キー、値ストア)であり、インデックスベースのアクセスをサポートしていません。これは、ハッシュ内のアイテムに予測可能な反復順序がないためです。

オブジェクトフィールドでインデックスのフレーバーを取得するためにできることは、次のとおりです。(jQueryで)

$.each(myObj, function(index, element) {
    console.log(index + ' : ' + element)
});

プレーンなJavaScriptでは、次のようにforinループを使用してフィールドを反復処理できます。

for (key in myObj) {
   console.log(key);
   console.log(myObj[key]);
}

(注:リテラルには構文エラーがあります)。

于 2012-07-16T08:39:12.303 に答える