_.each(list, iteratee, [context])
该函数的功能是:根据iterator迭代器提供的过滤条件,遍历list列表中的每一个元素,每遍历一次,产生一个迭代函数。此外,iterator迭代器还可以与可选项context上下文对象绑定。
_.each([1, 2, 3], alert);
=> 1;2;3 (输出数组中的每个经过运算后的元素,等价于for循环,无返回值。)
_.map(list, iteratee, [context])
该函数的功能是:根据iterator迭代器中的函数,遍历list列表中的每一个元素,在完成列表元素遍历之后,该函数将返回一个数组对象。
_.map([1, 2, 3], function(num){ return num * 2; });
=> [2, 4, 6] (输出的是经过运算后的数组,相当于映射,新数组的长度等于原数组的长度,有返回值。)
_.reduce(list, iteratee, [memo], [context])
别名为 inject 和 foldl, reduce方法把list中元素归结为一个单独的数值。Memo是reduce函数的初始值,reduce的每一步都需要由iteratee返回。这个迭代传递4个参数:memo,value 和 迭代的index(或者 key)和最后一个引用的整个 list。
如果没有memo传递给reduce的初始调用,iteratee不会被列表中的第一个元素调用。第一个元素将取代 传递给列表中下一个元素调用iteratee的memo参数。
var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
=> 6 (输出的是被遍历数组的所有元素的运算结果,是一个值。有返回值。)
_.filter(list, predicate, [context])
遍历list中的每个值,返回包含所有通过predicate真值检测的元素值。(愚人码头注:如果存在原生filter方法,则用原生的filter方法。)
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [2, 4, 6] (输出的是经过条件筛选后的数组,新数组的长度小于等于原数组的长度,有返回值。)