UNPKG

iteragain

Version:

Javascript Iterable/Iterator/Generator-function utilities.

32 lines 1.06 kB
import toIterator from './toIterator'; import FilterIterator from './internal/FilterIterator'; export function unique(...args) { var _a; if (typeof args[0] === 'function' || !args.length) return it => unique(it, args[0]); const it = toIterator(args[0]); args[1] = (_a = args[1]) !== null && _a !== void 0 ? _a : ((v) => v); const { iteratee = (v) => v, justSeen = false } = typeof args[1] === 'function' ? { iteratee: args[1] } : args[1]; if (justSeen) { let lastValue; return new FilterIterator(it, value => { value = iteratee(value); if (!lastValue || value !== lastValue) { lastValue = value; return true; } return false; }); } const seen = new Set(); return new FilterIterator(it, value => { value = iteratee(value); if (!seen.has(value)) { seen.add(value); return true; } return false; }); } export default unique; //# sourceMappingURL=unique.js.map