2012-02-27 24 views
0

ループで動的配列を作成する必要がありますが、目的の結果が得られないようです。動的配列を作成する

私が欲しいの配列は次のとおりです。

{ 
    "CategoryName": "somecategoryname", 
    "Date": "02-17-2012", 
    "Id": 24, 
    "ProductToHide": [ 
     { 
      "IsHide": true, 
      "ProductId": "someid" 
     } 
    ], 
    "ProductsToAdd": [ 
     { 
      "MealSequence": "S1", 
      "ProductId": "Someid" 
     }, 
     { 
      "MealSequence": "S2", 
      "ProductId": "Snack_11" 
     } 
    ], 
    "UserId": "1" 
} 

と私は製品を追加するには、次の機能を使用しています:私は次のエラーを与える

addProduct: function(id){ 
     var tempArr = []; 
     $.each(this.mCData.ChildCategories, function(i, item){ 
      $.each(item.PList, function(j, jsonPr){ 
       if (jsonPr.TID == id){ 
        addProduct = new mealTypeProduct(); 
        addProduct.data = jsonPr; 
        tempArr = addProduct.modifyProduct(); 
       } 
      }) 
     }) 

    // queryStr = {"add" : tempArr}; 
    // this.modificationArray.push(queryStr); 
     this.modificationArray['add'].push(tempArr);  
     console.log(this.modificationArray); 
    } 

その:

this.modificationArray.add.push is not a function 
this.modificationArray['add'].push(tempArr); 

初期化は次のようにして行われる。

var mealType = { 
    chosenDate: new Date(), tabViewHtml: '', 
    modificationArray: [], saveArray: [], 
} 

私は間違っていますか?

+0

したい配列が配列でないとして初期化されなければなりません。それはオブジェクトです。 'modifyProduct'の機能は何ですか?それは何を返すのですか?それは配列を返しますか?スカラ(またはオブジェクト)を返すと、tempArrayが緩んでいます。詳細が必要です。 –

+0

modifyProduct()は別のサブ配列を返します。 – amit

+0

これを作成しようとしているソース配列/オブジェクトを共有してください。可能であれば、http://jsfiddle.net/デモを作成してください。 – Diode

答えて

0

この行:それは(アレイではないかもしれない)、最後のマッチング積の値を有するであろう呼び出し$.eachの終了時に

   tempArr = addProduct.modifyProduct(); 

は、新しい値でtempArrを置き換えなくそれらのすべての配列よりも。それがあなたが望むものなら、それは問題ではありません。

実際のエラーについては、あなたはどんなタイプのものがthis.modificationArrayですか? addというメンバーがいますか?そのメンバーはpush()の機能を持っていますか?それは適切に初期化されていますか、または初期化されていませんか?後者の場合、問題があります:push()に電話する前に初期化する必要があります。

更新:this.modificationArrayが新しいサンプルコードのように[]に初期化されている場合は、配列そのものです。 addのメンバーはありません。コードはthis.modificationArray.push(tempArr)とします。あなたが本当にaddメンバーをしたいです場合

あるいは、その後、this.modificationArraymodificationArray : {add:[]}

+0

thats私は何を考えました。どのように私はそれを正しく初期化するのですか? – amit

+0

質問のコードを更新しました – amit

+0

更新された質問を反映するように更新されました。 –