为了正确定义函数,我需要从jQuery过滤器回调方法返回什么,无论在调用过滤器方法后是否未使用应用于my变量的过滤器的结果?
var results = [];
var filterResult = 0;
$(elem).each(function(){
results.push($(this).val().trim().toLowerCase())
});
var string = event.target.value.trim().toLowerCase();
results.filter(function (r) {
if(r == string)
filterResult = filterResult + 1;
return r; //<-- what needs to be returned for this callback to be properly defined
});
答案 0 :(得分:1)
Array.prototype.filter通过将函数应用于现有数组的每个元素来创建 new 数组,并且只有在函数返回true
时才包含该元素。
reduce()
方法对累加器和数组中的每个元素(从左到右)应用函数以将其减少为单个值。
例如:
var arr = [-3,-2,-1,0,1,2,3];
var positive = arr.filter(function (num) {
return num > 0;
});
// num now contains: [1,2,3]
从您的代码段开始,这看起来并不像您尝试做的那样。相反,您似乎正在尝试从数组的元素派生单个值。在这种情况下,您想要的是Array.prototype.reduce:
var count = results.reduce(function (total, currentItem) {
if (currentItem == string) {
return total + 1;
} else {
return total;
}
}, 0);
第二个参数(0)是total
的起始值。