Produces a duplicate-free version of the array, using === to test object equality. If you know in advance that the array is sorted, passing true for isSorted will run a much faster algorithm. If you want to compute unique items based on a transformation, pass an iterator functio

去除数组中重复的值,返回数组中所有唯一的值。别名unique

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

源码:

  _.uniq = _.unique = function(array, isSorted, iterator) {
    var initial = iterator ? _.map(array, iterator) : array;
    var results = [];
    // The `isSorted` flag is irrelevant if the array only contains two elements.
    if (array.length < 3) isSorted = true;
    _.reduce(initial, function (memo, value, index) {
      if (isSorted ? _.last(memo) !== value || !memo.length : !_.include(memo, value)) {
        memo.push(value);
        results.push(array[index]);
      }
      return memo;
    }, []);
    return results;
  };

  

  

 

 

 

 

 

 

posted on 2012-04-15 23:21  himanhimao  阅读(1001)  评论(0编辑  收藏  举报