我有以下带回调函数的数组过滤器:
array.filter(createPredicateFn(expression, comparator));
我的回调函数声明如下:
function createPredicateFn(expression, comparator) {
如何在createPredicateFn中获取元素的索引?
编辑:
这是我的谓词函数:
function createPredicateFn(expression, comparator) {
var predicateFn;
if (comparator === true) {
comparator = angular.equals;
} else if (!angular.isFunction(comparator)) {
comparator = function (actual, expected) {
if (angular.isObject(actual) || angular.isObject(expected)) {
// Prevent an object to be considered equal to a string like `'[object'`
return false;
}
actual = angular.lowercase('' + actual);
expected = angular.lowercase('' + expected);
return actual.indexOf(expected) !== -1;
};
}
predicateFn = function (item) {
return deepCompare(item, expression, comparator);
};
}
答案 0 :(得分:3)
在createPredicateFn()
内你必须返回另一个功能。这个内部函数最多可以有三个参数:
因此,内部函数的第二个参数是您要查找的索引。
一个简单的例子可能如下所示:
function createPredicateFn(expression, comparator) {
return function( val, index, arr ) {
// do something and return a boolean here
return index % 2 == 0;
}
}