underscore.js 部分内容总结

最近刚接触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中, falsenull0""undefined 和 NaN 都是false值.

_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]

--未完待续--

猜你喜欢

转载自sodler.iteye.com/blog/2353371