【发布时间】:2021-09-29 08:18:13
【问题描述】:
我正在尝试一个真正简单的事情,即在二维数组中循环并通过检查每行的行来创建另一个数组。
例如,我的二维数组包含来自 Google 表格的一系列单元格的十六进制颜色。我想检查每一行并验证元素 id 是红色还是橙色。
这是我的示例代码:
var 2Darray = [ [ '#ff0000', '#000000', '#000000' ],
[ '#000000', '#ff6d01', '#000000' ],
[ '#000000', '#000000', '#000000' ] ]
var redHex = "#ff0000";
var orangeHex = "#ff6d01";
var newColors = [];
for (var i = 0; i < rangeColor.length; i++) {
var keepGoing = true;
for (var j = 0; j < rangeColor[i].length; j++) {
switch (rangeColor[i][j]) {
case redHex:
newColors[i] = redHex;
console.log("1")
keepGoing = false;
break;
case orangeHex:
newColors[i] = orangeHex;
console.log("2");
keepGoing = false;
break;
case "#000000":
newColors[i] = "#000000";
console.log("3")
keepGoing = false;
break;
}
if (!keepGoing) {
break;
}
}
}
console.log(newColors);
我的新数组应该是:[ '#ff0000', '#ff6d01', '#000000' ],但是是[ '#ff0000', '#000000', '#000000' ],这表明我的循环存在问题,但我不知道是什么问题。也许是双循环的中断行为?
【问题讨论】:
-
rangeColor.length是什么? -
你指的 rangeColor 变量是什么?
-
虽然我不确定我是否能正确理解你的脚本,但如果你的脚本中
2Darray是rangeColor,那么删除case "#000000":中的keepGoing = false;怎么样?因为当检查数组的第二个元素时,只检查第一个元素,因为keepGoing = false;case "#000000":。如果2Darray是rangeColor,我认为通过这个修改,得到[ '#ff0000', '#ff6d01', '#000000' ]。如果我误解了你的剧本,我深表歉意。
标签: javascript arrays google-apps-script google-sheets