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