JavaScript过滤器 - 从jQuery过滤器回调方法返回什么内容?

时间:2017-10-03 20:59:30

标签: javascript

为了正确定义函数,我需要从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
});

1 个答案:

答案 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的起始值。