javascript functionalize if语句

时间:2015-08-27 22:51:54

标签: javascript

我有一个用于汇总数据(计数,求和,平均等)的通用函数我想为它添加标准,就像这样。

function summarize(data, criteria, criteriaCol, criteriaValue)
  for(i=0;i<data.length){
      if(data[i][criteriaCol] criteria criteriaValue){
        //do stuff
        }
    }
}

在这个例子中,我希望标准是一个运算符

1 个答案:

答案 0 :(得分:1)

您可以让summarize函数接受函数作为criteria参数:

function summarize(data, criteriaCol, criteriaValue, criteria)
{
  for(i=0;i<data.length;i++){
      if(criteria(data[i][criteriaCol], criteriaValue)){
           //Do something.
        }
    }
}

假设您希望对列中小于criteriaValue五的元素执行操作。然后你会这样做:

function smallerThan(data, value) {
    return data < value;
}

summarize(data, 4, 5, smallerThan);

或者,您可以声明内联函数:

summarize(data, 4, 5, function(data, value) {
    return data < value;
});

您可以为每个操作符创建一个函数,甚至可以创建更复杂的函数,而不仅仅是简单的比较。