我想将比较器传递给函数,并且不确定这是否可以使用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);
答案 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;
});