最近刚接触underscore,故对其中的部分使用过的内容进行总结,会不断补充。
【flatten
_.flatten(array, [shallow])
将一个多维的数组 array(可以是任何层数)转换为只有一层的数组。 如果传递 shallow参数,数组将只减少一维的嵌套。并不会更改原数组,也不会新建数组,要自己定义变量获取结果传递使用。】
_.flatten( [1, [2], [3, [[4]]]] ); => [1, 2, 3, 4]; _.flatten( [1, [2], [3, [[4]]]] , true ); => [1, 2, 3, [[4]]];
【groupBy
_.groupBy(list, iteratee, [context])
把一个集合分组为多个集合,通过 iterator 返回的结果进行分组. 如果 iterator 是一个字符串, 那么将使用 iterator 作为各元素的属性名来对比进行分组.返回一个对象。】
_.groupBy([1.3, 2.1, 2.4], function(num){ return Math.floor(num); }); => {1: [1.3], 2: [2.1, 2.4]} _.groupBy( ['one', 'two', 'three'] , 'length' ); => {3: ["one", "two"], 5: ["three"]} _.groupBy( [name:'a',count:1,name:'b',count:2] , 'name' ); => { a:{name:'a',count:1} , b:{name:'b'count:2} }
【countBy
_.countBy(list, iteratee, [context])
排序一个列表组成一个组,并且返回各组中的对象的数量的计数。类似groupBy,但是不是返回列表的值,而是返回在该组中值的数目。新建变量命以传递使用。】
_.countBy([1, 2, 3, 4, 5], function(num){ return num % 2 == 0 ? 'even': 'odd'; }); => {odd: 3, even: 2}
【partition
_.partition(array, predicate)
拆分一个数组(array)为两个数组,第一个数组的元素满足predicate迭代函数, 不能满足predicate函数的进入第二个数组。需要return,新建数组保存结果。】
_.partition( [0, 1, 2, 3, 4, 5] , isOdd ); => [[1, 3, 5], [0, 2, 4]]
【uniq
_.uniq(array, [isSorted], [iteratee]) 别名: unique
返回 array去重后的副本, 使用 === 做相等测试. 如果您确定 array 已经排序, 那么给 isSorted 参数传递 true值, 此函数将运行的更快的算法. 如果要处理对象元素, 传参 iterator 来获取要对比的属性。】
_.uniq( [1, 2, 1, 3, 1, 4] ); => [1, 2, 3, 4] _.uniq( [{name:'sp',age:1},{name:'sp',age:2},{name:'sps',age:2}],false,function(a){return a.name}) =>[{name:"sp",age:1},{name:"sps",age:2}]
【object
_.object(list, [values])
将数组转换为对象。传递任何一个单独[key, value]对的列表,或者一个键的列表和一个值得列表。 如果存在重复键,最后一个值将被返回。设置变量。】
_.object( ['moe', 'larry', 'curly'] , [30, 40, 50] ); => {moe: 30, larry: 40, curly: 50} _.object( [ ['moe', 30] , ['larry', 40] , ['curly', 50] ]); => {moe: 30, larry: 40, curly: 50}
【without
_.without(array, *values)
返回一个删除所有values值后的 array副本,除非array中含有否则使用数组作为*values是错误的。(注:使用===表达式做相等测试。)】
_.without( [1, 2, 1, 0, 3, 1, 4] , 0, 1); => [2, 3, 4]
【合并对象
extend_.extend(destination, *sources)
复制source对象中的所有属性覆盖到destination对象上,并且返回 destination 对象. 后面对象相同的属性的值会把前面的覆盖掉(如果属性键有重复).】
_.extend({name: 'moe'}, {na: 50},{age:23}); => {name: "moe", na: 50, age: 23}
compact_.compact(array)
返回一个除去所有false值的 array副本。 在javascript中, false, null, 0, "", undefined 和 NaN 都是false值.
_.compact([0, 1, false, 2, '', 3]); => [1, 2, 3]
--未完待续--