Underscore文档中的常用方法

each_.each(list, iteratee, [context]) Alias: forEach 
遍历list中的所有元素,按顺序用遍历输出每个元素。如果传递了context参数,则把iteratee绑定到context对象上。每次调用iteratee都会传递三个参数:(element, index, list)。如果list是个JavaScript对象,iteratee的参数是 (value, key, list))。返回list以方便链式调用。
_.each([1, 2, 3], alert);
=> 1;2;3 (输出数组中的每个经过运算后的元素,等价于for循环,无返回值。)

map_.map(list, iteratee, [context]) Alias: collect 
通过转换函数(iteratee迭代器)映射列表中的每个值产生价值的新数组。iteratee传递三个参数:value,然后是迭代 index(或 key 愚人码头注:如果list是个JavaScript对象是,这个参数就是key),最后一个是引用指向整个list。
_.map([1, 2, 3], function(num){ return num * 3; });
=> [3, 6, 9] (输出的是经过运算后的数组,相当于映射,新数组的长度等于原数组的长度,有返回值。)

reduce_.reduce(list, iteratee, [memo], [context]) Aliases: inject, foldl 
别名为 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_.filter(list, predicate, [context]) Alias: select 
遍历list中的每个值,返回包含所有通过predicate真值检测的元素值。(愚人码头注:如果存在原生filter方法,则用原生的filter方法。)
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [2, 4, 6] (输出的是经过条件筛选后的数组,新数组的长度小于等于原数组的长度,有返回值。)

猜你喜欢

转载自wangyongfei.iteye.com/blog/2354659