2011-09-15 5 views
3

笑っていません。私は長い日の仕事をしていると思います。私が思っていることのために助けられたどんな助けも、ばかげた単純な問題です。Javascriptループとビルド・アトリビュートのインデックスは未定義

optionarray = []; 

for(i=0;i<response.length;i++) { 

    optionarray[i]['content'] = response[i]['name']; 
    optionarray[i]['value'] = response[i]['id']; 
} 

optionarray [i]は配列に追加して構築しようとすると未定義です。私はばかげた何かをばかげてやっていることを知っている私はちょうど何を覚えていないことができます:

事前の助けに多くのありがとう。

+0

としてあなたはoptionarrayを定義する必要があり、この1

optionarray[i] = []; optionarray[i]['content'] = response[i]['name']; optionarray[i]['value'] = response[i]['id']; 

を試してみては、あなたの助けのためのみんなに感謝します。私は愚かされていた:) PHPの方法があまりにも多く考える;) – Jimbo

答えて

3
optionarray = []; 

for(i=0;i<response.length;i++) { 

    optionarray[i] = { 
      'content' :response[i]['name'], 
      'value': response[i]['id'] 
    }; 

} 
+0

ご協力ありがとうございます:-) – Jimbo

1

存在しないoptionarray[i]のプロパティにアクセスしようとしています。

を:あなたは、各イテレーションでやるべきことは何

  1. あなたはこのように一度に両方を行うことができます

、そのオブジェクトのプロパティの設定optionarray

  • に新しいオブジェクトを追加することです
    optionarray = []; 
    
    for(i=0;i<response.length;i++) { 
        optionarray.push({ 
         content: response[i]['name'], 
         value: response[i]['id'] 
        }); 
    } 
    
  • +0

    私はこのソリューションが私より優れているが、私はそれが "プッシュ"で、 "プッシュバック"ではないと思うよ –

    +0

    'push_back'?そのコードはJavaScriptでさえありません! –

    +0

    @PhilParsons:Ooops!そこにC++のバグ:) - 修正されました。 – Jon

    1

    私はあなたがoptionarray [i] oを初期化する必要があると思いますあなたのforループ内にある:

    var optionarray = []; //NOTE: I added var here so because otherwise it's an implicit global 
    
    for(i=0;i<response.length;i++) { 
        optionarray[i] = {}; 
        optionarray[i]['content'] = response[i]['name']; 
        optionarray[i]['value'] = response[i]['id']; 
        // BETTER: optionarray.push({content: response[i]['name'], value: response[i]['id']}); 
    } 
    

    私は間違いないと思います。

    +0

    助けてくれてありがとう;-) – Jimbo

    0

    [i]を配列最初

    +0

    配列ではありません - 正しいものはオブジェクトです。 – Jon

    +0

    ご協力ありがとうございました:) – Jimbo

    関連する問題