filter

_.filter(list, predicate, [context])Alias: select
遍历 list 中的每个值,返回所有通过 predicate 真值检测的元素所组成的数组。predicate 通过 iteratee 进行转换,以简化速记语法。

1
2
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [2, 4, 6]

filter.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import cb from './_cb.js';
import each from './each.js';

// 返回通过真值测试的所有元素
export default function filter(obj, predicate, context) {
var results = [];
// 改变this指向
predicate = cb(predicate, context);
// each 循环可迭代对象的每一项,将结果push进数组
each(obj, function(value, index, list) {
if (predicate(value, index, list)) results.push(value);
});
return results;
}