【发布时间】:2020-08-21 19:18:22
【问题描述】:
我想创建一个 for 循环,用不同的变量名执行相同的操作。例如;在下面的代码中,我想循环代码 6 次,并且单词“civil”的每个实例都将根据数组中的值而变化。
civilSheet.activate();
//grab values from column A and determine which rows the Hot List, Coordination Items, and Responsibilities information
var civilData = civilSheet.getRange('A:A').getValues();
for(var j=0;j<civilData.length;j++){
if(civilData[j] == "~Hot List~"){
var civilHot = j+3;
} else if(civilData[j] == "~Coordination Items~"){
var civilCoord = j+1;
} else if(civilData[j] == "~Responsibilities~"){
var civilResp = j+1;
}
}
目标类似于以下代码:
var variableNames = ["civil", "struct", "avl", "fpm", "electrical", "arch"];
for(var i=0;i<variableNames.length;i++){
var i+"Data" = i+"Sheet".getRange('A:A').getValues();
for(var j=0;j<i+"Data".length;j++){
if(i+"Data"[j] == "~Hot List~"){
var i+"Hot" = j+3;
} else if(i+"Data"[j] == "~Coordination Items~"){
var i+"Coord" = j+1;
} else if(i+"Data"[j] == "~Responsibilities~"){
var i+"Resp" = j+1;
}
}
}
【问题讨论】:
-
JavaScript 没有动态变量名。它确实具有计算属性,但这是另一回事。为了每个人的缘故,为什么变量名很重要?只有阅读代码的人才能看到它。运行您的代码的内容并不关心如何命名变量,只有变量保存的数据是相关的。
-
我同意@Oleg - 动态变量名是个坏主意。你能在这里用字典吗?喜欢
data["civil"][0]? -
@Mike67 - 嗯,似乎 OP 甚至不需要字典,我看不到
civilHot等持有的数据取决于i的值。可能没有数据样本,它仍然是一个谜。 -
最终目标是找到一种通过循环运行代码 6 次的方法,而不是使用不同的变量名复制和粘贴相同的代码 6 次。
-
@ChrisMMgr 代码缩短是一项很好的工作。但是创建变量不是。
["civil", "struct", "avl", "fpm", "electrical", "arch"]应该代表什么变量?它可以用一个普通的 for 循环来完成。你可能想多了。
标签: javascript for-loop google-apps-script google-sheets