js underscore常用函数定义及用法

在underscore中我们经常会用到的函数主要有以下这些:
   each、map、filter、invoke、countBy、first、uniq、defaults
  each   _.each(list, iteratee, [context])
遍历list中的所有元素,按顺序用遍历输出每个元素。与for循环差多。

var a = [1,2,3];
_.each(a,function(num){});
console.log(a);//输出[1,2,3]

 map   _.map(list, iteratee, [context])

通过转换函数(iteratee迭代器)映射列表中的每个值产生价值的新数组。也就是通过遍历改变了值得到新的值。

_.map([1, 2, 3], function(num){ return num * 3; });
=> [3, 6, 9]
_.map({one: 1, two: 2, three: 3}, function(num, key){ return num * 3; });
=> [3, 6, 9]
_.map([[1, 2], [3, 4]], _.first);
=> [1, 3]

 filter   _.filter(list, predicate, [context])

遍历list中的每个值,返回包含所有通过predicate真值检测的元素值。

var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [2, 4, 6]

 invoke_.invoke(list, methodName, *arguments)
list的每个元素上执行methodName方法。 任何传递给invoke的额外参数,invoke都会在调用methodName方法的时候传递给它。 也就是可以在这个函数中调用别的方法。

_.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
=> [[1, 5, 7], [1, 2, 3]]

 countBy _.countBy(list, iteratee, [context])
排序一个列表组成一个组,并且返回各组中的对象的数量的计数。类似groupBy,但是不是返回列表的值,而是返回在该组中值的数目。 可以对数组中的元素进行计数。

_.countBy([1, 2, 3, 4, 5], function(num) {
  return num % 2 == 0 ? 'even': 'odd';
});
=> {odd: 3, even: 2}

 first _.first(array, [n]) Alias: head, take
返回array(数组)的第一个元素。传递 n参数将返回数组中从第一个元素开始的n个元素。

_.first([5, 4, 3, 2, 1]);
=>5
_.first([5, 4, 3, 2, 1],[3]);
=>5,4,3

 uniq  _.uniq(array, [isSorted], [iteratee])

对数组或对象进行去除重复。返回 array去重后的副本, 使用 === 做相等测试. 如果您确定 array 已经排序, 那么给 isSorted 参数传递 true值, 此函数将运行的更快的算法. 如果要处理对象元素, 传递 iteratee函数来获取要对比的属性.

_.uniq([1, 2, 1, 3, 1, 4]);
=> [1, 2, 3, 4]
_.uniq([{a:1},{a:1},{a:2}],function(key){return key.a;});
=>[{a:1},{a:2}]

 defaults   _.defaults(object, *defaults)

defaults对象填充object 中的undefined属性。 并且返回这个object。一旦这个属性被填充,再使用defaults方法将不会有任何效果。

var iceCream = {flavor: "chocolate"};
_.defaults(iceCream, {flavor: "vanilla", sprinkles: "lots"});
=> {flavor: "chocolate", sprinkles: "lots"}

 

猜你喜欢

转载自553570934.iteye.com/blog/2300282