我需要创建一个带循环的动态数组..但我似乎无法获得所需的结果。
我想要的数组是:
{
"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 :(得分:0)
这一行:
tempArr = addProduct.modifyProduct();
用新值替换 tempArr
,因此在$.each
调用结束时,它将获得最后一个匹配产品的值(可能不是数组)而不是成为所有这些的数组。如果这就是你想要的那么那不是问题。
至于你引用的实际错误:this.modificationArray
是什么类型的东西?它是否有一个名为add
的成员?该成员是否具有push()
功能?它是否正确初始化,还是未初始化?如果是后者,则存在问题:您需要初始化它才能调用push()
。
更新:如果this.modificationArray
初始化为[]
,就像在新的示例代码中那样,那么它就是一个数组本身;它没有add
成员。代码应该说this.modificationArray.push(tempArr)
。
或者,如果您确实需要add
成员,则应将this.modificationArray
初始化为modificationArray : {add:[]}