对象比较始终返回默认选择条件

时间:2018-08-14 19:34:58

标签: google-apps-script google-sheets

因此,我的目标是将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中的每个单元格都是“马萨诸塞州”。

1 个答案:

答案 0 :(得分:0)

sheet.getRange("H2:H31").getValues()返回的对象始终是2D数组,即即使是单列的数组。

您正在将字符串与数组进行比较,这就是为什么结果始终为false的原因。

您应该“展平”该2D阵列以获得一个简单的阵列。 您可以使用以下小代码轻松完成此操作:

var states = sheet.getRange("H2:H31").getValues().join().split();