【发布时间】:2014-12-31 02:25:33
【问题描述】:
filesNamed 是我想要累积和设置数据的参考数组。因此,对于filesNamed 中的每个索引,应累积来自emailData 的包含相同电影标题的数组,并最终将其设置在谷歌电子表格中的一个范围内。将数据设置在一个范围之外,我在这个任务的第一部分遇到了问题。
var filesNamed = [
["Happiness","Karate for Life","Dogtooth","The Streetfighter","Mind Game","The Raid","The Hole","Plaga Zombie","Funny Games"]
];
var emailData = [
["Date","Happiness","Sender 1","Receiver 1","Subject 1" ],
["Date","Happiness","Sender 1","Receiver 1","Subject 1" ],
["Date","Happiness","Sender 1","Receiver 1","Subject 1" ],
["Date","Happiness","Sender 1","Receiver 1","Subject 1" ],
["Date","Happiness","Sender 1","Receiver 1","Subject 1" ],
["Date","Karate for Life","Sender 2","Receiver 2","Subject 2" ],
["Date","Karate for Life","Sender 2","Receiver 2","Subject 2" ],
["Date","Karate for Life","Sender 2","Receiver 2","Subject 2" ],
["Date","Karate for Life","Sender 2","Receiver 2","Subject 2" ],
["Date","Karate for Life","Sender 2","Receiver 2","Subject 2" ],
["Date","Karate for Life","Sender 2","Receiver 2","Subject 2" ],
["Date","Dogtooth","Sender 3","Receiver 3","Subject 3" ],
["Date","Dogtooth","Sender 3","Receiver 3","Subject 3" ],
["Date","Dogtooth","Sender 3","Receiver 3","Subject 3" ],
["Date","Dogtooth","Sender 3","Receiver 3","Subject 3" ],
["Date","The Streetfighter","Sender 4","Receiver 4","Subject 4" ],
["Date","The Streetfighter","Sender 4","Receiver 4","Subject 4" ],
["Date","The Streetfighter","Sender 4","Receiver 4","Subject 4" ],
["Date","The Streetfighter","Sender 4","Receiver 4","Subject 4" ],
["Date","Mind Game","Sender 5","Receiver 5","Subject 5" ],
["Date","Mind Game","Sender 5","Receiver 5","Subject 5" ],
["Date","Mind Game","Sender 5","Receiver 5","Subject 5" ],
["Date","Mind Game","Sender 5","Receiver 5","Subject 5" ],
["Date","The Raid","Sender 15","Receiver 15","Subject 15" ],
["Date","The Raid","Sender 15","Receiver 15","Subject 15" ],
["Date","The Raid","Sender 15","Receiver 15","Subject 15" ],
["Date","The Raid","Sender 15","Receiver 15","Subject 15" ],
["Date","The Hole","Sender 25","Receiver 25","Subject 25" ],
["Date","The Hole","Sender 25","Receiver 25","Subject 25" ],
["Date","The Hole","Sender 25","Receiver 25","Subject 25" ],
["Date","Plaga Zombie","Sender 35","Receiver 35","Subject 35" ],
["Date","Plaga Zombie","Sender 35","Receiver 35","Subject 35" ],
["Date","Plaga Zombie","Sender 35","Receiver 35","Subject 35" ],
["Date","Funny Games","Sender 45","Receiver 45","Subject 45" ],
["Date","Funny Games","Sender 45","Receiver 45","Subject 45" ]
];
下面代码的问题在于,虽然第一次循环通过 filesNamed[0][0] == emailData[0][1] 返回匹配,但第二次循环,两个 for 循环都递增 - 但我们还没有完成从 emailData 累加所有数组上面的标题Happiness(还有4个)。我认为计数器应该只在循环中断后增加,这表明我们已经到达了属于移动幸福的数组的最后一个。我尝试将 counter(l++) 放在 else 语句中,但这不起作用。
正如我所说的那样:我希望数组中属于特定电影标题的所有数据都放在它自己的电子表格中。每个子数组(以日期开头)应该在自己的行中,其中索引将跨越 5 列。
function theo (){
Logger.log("emailData.length: " + emailData.length);
Logger.log("filesNamed[0].length: " + filesNamed[0].length);
for(var i=0;i<emailData.length;i++){
for(var l=0;l<filesNamed[0].length;l++){
if(filesNamed[0][l] == emailData[i][1]){
Logger.log("");
Logger.log("match");
Logger.log("emailData[0]): " + emailData[i][1]);
Logger.log("filesNamed[0][l]: " + filesNamed[0][l]);
Logger.log("");
Logger.log("l: "+l);
Logger.log("i: "+i);
} else {
Logger.log("");
Logger.log("broke");
Logger.log("emailData[0]): " + emailData[i][1]);
Logger.log("filesNamed[0][l]: " + filesNamed[0][l]);
Logger.log("");
Logger.log("l: "+l);
Logger.log("i: "+i);
}
}
}
}
Happiness 电子表格将包含 5 行。 Karate for Life 电子表格将包含 6 行。 Dogtooth 电子表格将包含 4 行。等等……
一位朋友建议我学习迭代器,我会的,但我想知道是否有另一种方法来构建我的双循环,以便更接近原始方法的工作。还有一些教训可以摆脱这种失败。
【问题讨论】:
-
除了将日志记录为调试方法之外,您希望从这些循环中输出什么?你说累积的电子邮件数组,但不清楚你想要什么或为什么你有什么不起作用。
-
我在两个代码 sn-ps 之间解释了为什么这不起作用。这个想法是将属于特定电影标题的所有数组设置为具有相同电影标题的特定谷歌电子表格的行。这个列表会不断积累新的片名,每个片名都会不断积累数组。
-
恐怕我没有遇到问题。运行
theo每次递增emailData时都会循环通过filesNamed,但具体到filesNamed 的链接是什么?您希望 emailData 中的所有数组都是单独的行还是每个标题连接? -
从您的问题编辑中,我认为您已经得到了您想要的,但不是您期望的。交换循环,你会看到相同的匹配,但顺序不同。
标签: javascript arrays for-loop google-apps-script