【发布时间】:2014-09-30 03:52:29
【问题描述】:
我在处理这段代码时遇到了问题,无法弄清楚。它似乎是添加到“数据”而不是像它应该的那样从“数据”中添加“票证”。在 Google Script 中使用代码
function consolidate(){
var data = [[1,1,1,1,1,1],[1,1,1,1,1,1],[1,2,1,2,1,2],[1,2,1,2,1,2],[1,1,1,1,1,1],[1,2,1,2,1,2],[1,1,1,1,1,1],[1,2,1,2,1,2],[1,2,1,2,1,2]];
var ticket = [];
ticket[0] = data[0];
for(var x=0;x<data.length;x++){
for(var i=0;i<ticket.length;i++){
if(ticket[i][0]==data[x][0]&&ticket[i][1]==data[x][1]&&ticket[i][2]==data[x][2]&&ticket[i][4]==data[x][4]){
ticket[i][3]=ticket[i][3]+data[x][3];
ticket[i][5]=ticket[i][5]+data[x][5];
break;
}
}
ticket[i]=data[x];
}
}
我的数据结果是 [[1, 1, 1, 3, 1, 3], [1, 1, 1, 2, 1, 2], [1, 2, 1, 4, 1, 4], [1, 2, 1, 4, 1, 4], [1, 1, 1, 2, 1, 2], [1, 2, 1, 4, 1, 4], [1, 1, 1, 1, 1, 1], [ 1, 2, 1, 4, 1, 4], [1, 2, 1, 2, 1, 2]] 但数据不应该改变
【问题讨论】:
-
如果
ticket[i]=data[x];在i循环之外,它的用途是什么? -
数据会改变,因为通过
ticket[0] = data[0];,您实际上是在分配一个对象引用。 -
好吧,这是有道理的。我试图将第一行数据设置为票证以启动循环。谢谢!
标签: javascript for-loop nested-loops