time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_baseSortedUniq.js (758B)


      1 var eq = require('./eq');
      2 
      3 /**
      4  * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
      5  * support for iteratee shorthands.
      6  *
      7  * @private
      8  * @param {Array} array The array to inspect.
      9  * @param {Function} [iteratee] The iteratee invoked per element.
     10  * @returns {Array} Returns the new duplicate free array.
     11  */
     12 function baseSortedUniq(array, iteratee) {
     13   var index = -1,
     14       length = array.length,
     15       resIndex = 0,
     16       result = [];
     17 
     18   while (++index < length) {
     19     var value = array[index],
     20         computed = iteratee ? iteratee(value) : value;
     21 
     22     if (!index || !eq(computed, seen)) {
     23       var seen = computed;
     24       result[resIndex++] = value === 0 ? 0 : value;
     25     }
     26   }
     27   return result;
     28 }
     29 
     30 module.exports = baseSortedUniq;