我正在尝试构建基于Google AppsScript的WebApp。我正在一些嵌套的for
循环中为API调用准备一个JSON对象。我不知道为什么,但是不能使用第三个嵌套循环中的变量计数。
我试图通过使用计数变量(i,j,k)将一些值推入对象中,但是在if条件内它们不起作用。尽管我可以记录这些计数变量的值,但条件仍然有效,push()命令不起作用。没有错误报告。
var APIPayloadObject = {};
APIPayloadObject.update = [];
for(i=0; i < orders.length; i++){
...
APIPayloadObject.update[i].line_items = [];
for(j=0; j < lineItems.length; j++){
APIPayloadObject.update[i].line_items.push({id: lineItems[j].id});
...
for(k=0; k < lineItemMeta.length; k++){
APIPayloadObject.update[i].line_items[j].meta_data = [];
// APIPayloadObject.update[i].line_items[j].meta_data.push({id: k}); // This line is not necessary, but works.
...
if( lineItems[j].product_id == productID && lineItemMeta[k].key == 'Utánrendelve' ){
APIPayloadObject.update[0].line_items[0].meta_data.push({id: lineItemMeta[0].id}); // This works
APIPayloadObject.update[i].line_items[j].meta_data.push({id: lineItemMeta[k].id}); // Doesn't work
Logger.log(i+' '+j+' '+k); //prints out "0 0 0"
Logger.log(APIPayloadObject.update[0].line_items[0].meta_data); // prints out "[]" so it looks like the meta_data array exist
}
}
}
}
您知道为什么不能使用计数器变量将元素推入对象吗?
答案 0 :(得分:0)
计数器变量不起作用,因为您没有正确声明属性。
APIPayloadObject.update[i].line_items[j].meta_data
在这里,您必须为每个update[i]
声明line_items
和update
,为每个meta_data
声明line_items
。
尝试以下代码,可能会解决您的问题:
var APIPayloadObject = {};
APIPayloadObject.update = [];
for(i=0; i < orders.length; i++){
//Declaration part
APIPayloadObject.update[i] = {};
APIPayloadObject.update[i].line_items = [];
for(j=0; j < lineItems.length; j++){
//Declaration part
APIPayloadObject.update[i].line_items[j] = {};
APIPayloadObject.update[i].line_items[j].meta_data = [];
for(k=0; k < lineItemMeta.length; k++){
if(condition){
APIPayloadObject.update[0].line_items[0].meta_data.push({id: lineItemMeta[0].id}); // This works
APIPayloadObject.update[i].line_items[j].meta_data.push({id: lineItemMeta[k].id}); // Doesn't work
console.log(i+' '+j+' '+k); //prints out "0 0 0"
}
}
}
}