因此,我的目标是将2个状态传递给以下函数,并让它们确定状态是相同还是相邻。如果是的话,我希望函数返回true,否则返回false。
function shouldWeRun(origin, destination) {
var shouldWeRun = false;
switch (origin) {
case destination:
shouldWeRun = true;
case "Massachusetts":
if ( destination == "Connecticut" ||
destination == "New Hampshire" ||
destination == "New York" ||
destination == "Rhode Island" ||
destination == "Vermont" ) { shouldWeRun = true; };
break;
default:
shouldWeRun = false;
};
return shouldWeRun;
};
当我将状态声明为字符串数组时,就像这样...
var states = ["Massachusetts","Massachusetts","Connecticut","Virginia"];
...然后运行:
Logger.log("same state should return true: " + shouldWeRun(states[0],states[1]));
Logger.log("state neighbors should return true: " + shouldWeRun(states[0],states[2]));
Logger.log("non-neighbor states should return false: " + shouldWeRun(states[0],states[3]));
...该功能按宣传的方式工作。
但是,这是问题所在:如果我这样从电子表格中获取状态值(我需要如何)...
var states = sheet.getRange("H2:H31").getValues();
...该函数始终返回默认大小写,因此为false。
假设范围H2:H31中的每个单元格都是“马萨诸塞州”。
答案 0 :(得分:0)
sheet.getRange("H2:H31").getValues()
返回的对象始终是2D数组,即即使是单列的数组。
您正在将字符串与数组进行比较,这就是为什么结果始终为false
的原因。
您应该“展平”该2D阵列以获得一个简单的阵列。 您可以使用以下小代码轻松完成此操作:
var states = sheet.getRange("H2:H31").getValues().join().split();