0

我想将一个比较器传递给一个函数,但不确定这是否可以通过 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);
4

3 回答 3

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功能。

于 2012-05-19T04:05:04.063 回答
0

只需调用函数:

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

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

于 2012-05-19T04:05:10.837 回答
0

您可能正在寻找filterJavaScript 中已经存在的 :

var newList = list.filter(function(item) {
  return item.PropA > 5;
});
于 2012-05-19T04:05:38.423 回答