| /** |
| * An implementation of `_.uniq` optimized for sorted arrays without support |
| * for callback shorthands and `this` binding. |
| * |
| * @private |
| * @param {Array} array The array to inspect. |
| * @param {Function} [iteratee] The function invoked per iteration. |
| * @returns {Array} Returns the new duplicate free array. |
| */ |
| function sortedUniq(array, iteratee) { |
| var seen, |
| index = -1, |
| length = array.length, |
| resIndex = -1, |
| result = []; |
| |
| while (++index < length) { |
| var value = array[index], |
| computed = iteratee ? iteratee(value, index, array) : value; |
| |
| if (!index || seen !== computed) { |
| seen = computed; |
| result[++resIndex] = value; |
| } |
| } |
| return result; |
| } |
| |
| module.exports = sortedUniq; |