underscore是javascript的一个实用库,提供了一整套函数式编程的实用功能,它提供了100多个函数,使用underscore函数可精简代码。
下面我们就一起来看看使用这些函数能达到什么效果吧!
一,_.each:便利list中的所有元素,按顺序便利输出每一个元素
_.each([1, 2, 3], alert);实现的效果是1,2,3按顺序输出来 _.each({one: 1, two: 2, three: 3}, alert);实现的效果是1,2,3按顺序输出来
他的用法跟foreach差不多:
_.each在函数中的用法:
_.each(list,function(value){ alert value })
foreach在函数中的用法:
list.forEach(function(value){ alert value; })//value是参数和_,each中的value一样都是list中的元素
二,_.filter:遍历list中的每个值,返回的是满足条件的元素值。
var new arr=_filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); //定义一个新数组满足条件的元素存入数组结果是 [2, 4, 6],return的是满足num % 2 == 0的num
三,_.countBy:是用来统计元素的数量的,得到的是一个包含 键是元素值是数量的哈希表
_.countBy([1, 2,1,3,5,3 3, 4, 5], function(num) { }) 结果是{1:2,2:1,3:3,4:1,5:2}//统计了每个元素的数量放在了哈希表中
四:_.indexOf:是用来索引的,如果满足索引它返回的是满足索引条件的位置,如果不满足则返回的就是-1
_.indexOf([1, 2, 3, 4], 2); // 它返回的就是2的位置 _.indexOf([1, 2, 3, 4], 5); // 没有5所以它返回的就是-1
五:_.map:map的意思是映射,这个函数所起的作用是对数组里面的元素进行一定的操作,或者是对哈希表中的值进行一定的操作,它返回的是一个数组。对不满足条件的它返回的是undefined。
下面举例子来看一下:
_.map([1,2,3,2,4],function(num){ return num * 2; }) 他的结果是[2, 4, 6, 4, 8],对每一个参数都进行了操作。
_.map({one: 1, two: 2, three: 3}, function(num, key){ return num * 3; }); // 它的结果是[3, 6, 9] _.map([1,2,3,4,2,3],function(num){ if(num==2) { return num; } }) //结果是[undefined, 2, undefined, undefined, 2, undefined]
***一定要注意函数的大小写,否则会引起不必要的错误。
好好理解这些函数的功能,让编程越来越高效。