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 に答える