Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 从用户输入变量启动for循环_User Interface_Google Apps Script_Google Sheets - Fatal编程技术网

User interface 从用户输入变量启动for循环

User interface 从用户输入变量启动for循环,user-interface,google-apps-script,google-sheets,User Interface,Google Apps Script,Google Sheets,我正在做一张表格,两张不同的表格之间有交叉引用。它工作得很好,但每张纸大约有10000个条目,所以它检查了…很多。整个检查大约需要半个小时。对于初始检查,这很好 也就是说,我每周只在工作表中添加新条目,所以让它检查整个内容是不必要的。我想我知道怎么写,只是不知道怎么写 我的循环当前看起来如下所示: for (var i = 1; i < data1.length; i++) { for (var j = 1; j < data2.length; j++) {

我正在做一张表格,两张不同的表格之间有交叉引用。它工作得很好,但每张纸大约有10000个条目,所以它检查了…很多。整个检查大约需要半个小时。对于初始检查,这很好

也就是说,我每周只在工作表中添加新条目,所以让它检查整个内容是不必要的。我想我知道怎么写,只是不知道怎么写

我的循环当前看起来如下所示:

for (var i = 1; i < data1.length; i++) { 
    for (var j = 1; j < data2.length; j++) {
       ....

这在理论上应该是可行的,但由于某种原因,如果我这样做,我最终总是得到0个结果,我不知道为什么。我想我会把它弄得更糟。

我认为问题在于您在内部For循环中声明了j,这实际上否定了您从用户输入中获得的值。下面的代码似乎实现了您希望实现的目标。虽然它非常基本,并且可以接受大于20的输入,但这不会导致任何内部循环迭代。希望这有帮助

干杯

var input = Browser.inputBox("Enter row number:");

for (var i = 1; i<5; i++) {
 Logger.log("i = "+i);

 for (var j = input; j<20; j++) {
   Logger.log("j = "+j);
 }
}
var input=Browser.inputBox(“输入行号:”);

对于(var i=1;iYou应该能够重构项目以消除嵌套for循环,而不是使用查找对象/索引。请参阅我的答案,以及类似的优化。10k*10k比较-即使使用本机JS数组元素完成,也需要相当长的时间(每次比较1µs,10k*10k*1e-6是100秒)。每个索引最多可以读取2次(每个索引1次,根据索引信息,每个索引1次)。这太棒了,应该可以了。可能吧。我对查找对象了解不多,但我正试图弄清楚它到底是如何工作的。所以(基于示例)的基本要点是什么它将电子表格A列X转换为数组键,然后将电子表格B列Y与之进行比较?电子表格B也需要转换为数组吗?天哪,这将节省大量时间。这是基本思想,是的。创建一些计算,将记录的标识符转换为该记录在大型集合中的位置n、 如果您随后执行计算以获取位置,而该位置不存在或没有记录,则您知道您提供的密钥没有相关记录,而无需重新检查集合中的每个记录。您可以通过返回位置数组等方式使计算处理非唯一密钥。好的我想我理解它是如何工作的。我很感谢你简单地解释一下,10年前我上过一节课,所以我只记得语法和基本命令lol说有一个匹配。如果我想把匹配单元格的内容复制到一个特定的单元格,最好的方法是什么?保持它作为数组,然后像[r]那样做[(x) +4]要将其添加到单元格右侧的四列中吗?我假设它将在“var oldDataRow=database[existingIndex];”下输入,但我不确定它的确切措辞。非常感谢您的帮助,您是一个救生员。
var j=/**获取有效的j值*/;for(;j<…;++j){…}
循环初始化的
中的每个语句都是可选的。这很聪明!感谢您的提示!
var input = Browser.inputBox("Enter row number:");

for (var i = 1; i<5; i++) {
 Logger.log("i = "+i);

 for (var j = input; j<20; j++) {
   Logger.log("j = "+j);
 }
}