Javascript Google应用程序脚本::如果(<;存储筛选条件的变量>;)不起作用

Javascript Google应用程序脚本::如果(<;存储筛选条件的变量>;)不起作用,javascript,google-apps-script,Javascript,Google Apps Script,当我运行下面的代码时,它可以按照我的要求工作 for(var x in values) { if (values[x][7] == "ABC") { filterList.push(values[x]); } //end if } //end for loop 但是,如果我将过滤条件分配到变量中,如下所示,它就不会像上面的代码那样工作 var filterCondition = 'values[x][7] == "

当我运行下面的代码时,它可以按照我的要求工作

    for(var x in values)
    {
      if (values[x][7] == "ABC")
      {
      filterList.push(values[x]);
      } //end if
    } //end for loop
但是,如果我将过滤条件分配到变量中,如下所示,它就不会像上面的代码那样工作

    var filterCondition = 'values[x][7] == "ABC"';

    for(var x in values)
    {
      if (filterCondition)
      {
      filterList.push(values[x]);
      } //end if
    } //end for loop
我需要这个,因为我需要编写10个过滤条件。 有人能帮我吗?(请告诉我有一种方法可以做到..XD)
感谢

看起来您正试图将
过滤器条件
编写为一个宏,这在javascript中不受支持。您已经定义了一个字符串变量,它在
if
语句中的计算结果为
true
,这仅仅是因为该字符串存在。对这一点的回答中有很好的解释

如果您担心多个逻辑语句会使If语句难以读取,可以使用函数代替。假设过滤器一次只在一行上工作。您的代码如下所示:

function filterCondition(row) {
  return (
    // Amalgamation of filter conditions.
    (row[7] == "ABC") &&
    (row[5] > row[4])     // Keep adding conditions here
  )
}

  ... elsewhere in your code
  for(var x=0; x < values.length; x++)
  {
    if (filterCondition(values[x])) {
      filterList.push(values[x]);
    } //end if
  } //end for loop
函数过滤器条件(行){
返回(
//过滤条件的合并。
(第[7]行=“ABC”)&&
(第[5]行>第[4]行]//继续在此处添加条件
)
}
... 在代码的其他地方
对于(var x=0;x