如何传递函数来比较项目?

时间:2012-05-19 03:58:47

标签: javascript jquery comparison anonymous-function icomparer

我想将比较器传递给函数,并且不确定这是否可以使用Javascript。 C#中有一个IComparer概念就是这样做的。这可以在Javascript中完成吗?

function someAction (comparer) {
    var newList = [];
        $.each(list, function (index, item) {
            if comparer on item is true then { //psuedo code
                newList.push(item);
            }
        });
}

someAction(item.PropA > 5);

3 个答案:

答案 0 :(得分:4)

function someAction (comparer) {
    var newList = [];
        $.each(list, function (index, item) {
            if (comparer(item)) {
                newList.push(item);
            }
        });
}
someAction(function (item) { return item.PropA > 5 });

PS:正如@BrokenGlass建议的那样,你可以避免重新发明轮子并使用filter功能。

答案 1 :(得分:0)

只需调用函数:

  if (comparer(item)) { ... }

JavaScript中对函数的所有引用都是等效的,因此可以使用任何引用来调用函数,就像使用任何其他引用一样。换句话说,函数是第一类对象。

答案 2 :(得分:0)

您可能正在寻找已存在于JavaScript中的filter

var newList = list.filter(function(item) {
  return item.PropA > 5;
});