0

当我运行如下代码时,它可以按我的意愿工作。

    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)谢谢

4

1 回答 1

1

看起来您正在尝试将您filterCondition的宏编写为 javascript 不支持的宏。您已经定义了一个字符串变量,它的计算true结果与if语句中一样,仅仅是因为字符串存在。在为什么 if("string") 将 "string" 评估为 true 但 if ("string"==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
于 2013-06-02T03:08:42.953 回答