2

私はオブジェクトを持っています

data = {
    'choiceA' : 'Long-Wear',
    'choiceB' : 'Anti-Age Lifting/Firming',
    'choiceC' : 'Replenishing/ Moisturizing',
    'choiceD' : 'Natural/ True-to-Skin',
    'choiceE' : 'Smoothing/ Illuminating'
}    

整数を指定して4番目の値を取得する必要があります

 position = 3;

通常私は書くだろう

 key = $.inArray( position, ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE']);
 answer = data[key];

しかし、このような数字キーを使用してオブジェクトに直接アクセスすることは有効なJavaScriptですか?

 answer = data[position];  // where position is an integer

編集:
$。inArrayを逆方向に使用しているときに書いたいくつかの悪いコード!
私は書くつもりだった

 arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
 key = arr[position];
 answer = data[key];
4

3 に答える 3

4

いいえ、数値オブジェクトの「キー」が作成されるまで有効ではありません。

data = {
    '1' : 'Long-Wear',
    '2' : 'Anti-Age Lifting/Firming',
    '3' : 'Replenishing/ Moisturizing',
    '4' : 'Natural/ True-to-Skin',
    '5' : 'Smoothing/ Illuminating'
};

また、JavaScriptオブジェクトのプロパティは並べ替えられていないことに注意してください。だからあなたの解決策は私が見るように行くための最良の方法です。

于 2013-01-08T19:39:30.807 に答える
2

2つのこと:

  1. Javascriptキーは常に文字列です。他の何か(たとえば、数値)を渡すと、文字列に変換されます。(たとえば、で配列にインデックスを付けてみてください。array["3"]そうすれば機能するはずです。

  2. Javascriptオブジェクトは順序付けられていません!i番目のキーと値のペアを移植可能に戻すことはできません。代わりに、配列を使用して物(またはそのようなもの)を格納する必要があります。

    data = [
        { name:'choiceA', value: 'Long-Wear'},
        { name:'choiceB', value: 'Anti-Age Lifting/Firming'}
    ];
    

    データ表現を変更できない場合に実行できることの1つは、for-inループとカウント変数を使用してオブジェクトを反復処理することです。ただし、すべてのブラウザがキーが定義されたのと同じ順序で繰り返されるわけではないため、このアプローチは移植性がありません。

于 2013-01-08T19:45:33.533 に答える
2

あなたがそれを試したとしたら、あなたはそれが無効であることに気づいたでしょう。さらにそれは機能していません!

data[position]

あなたの例では未定義を返します...

于 2013-01-08T19:42:08.037 に答える