UNPKG

iteragain

Version:

Javascript Iterable/Iterator/Generator-function utilities.

38 lines 1.4 kB
import toIterator from './toIterator'; import FilterIterator from './internal/FilterIterator'; export function unique() { var _a; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (typeof args[0] === 'function' || !args.length) return function (it) { return unique(it, args[0]); }; var it = toIterator(args[0]); args[1] = (_a = args[1]) !== null && _a !== void 0 ? _a : (function (v) { return v; }); var _b = typeof args[1] === 'function' ? { iteratee: args[1] } : args[1], _c = _b.iteratee, iteratee = _c === void 0 ? function (v) { return v; } : _c, _d = _b.justSeen, justSeen = _d === void 0 ? false : _d; if (justSeen) { var lastValue_1; var hasLastValue_1 = false; return new FilterIterator(it, function (value) { value = iteratee(value); if (!hasLastValue_1 || value !== lastValue_1) { lastValue_1 = value; hasLastValue_1 = true; return true; } return false; }); } var seen = new Set(); return new FilterIterator(it, function (value) { value = iteratee(value); if (!seen.has(value)) { seen.add(value); return true; } return false; }); } export default unique; //# sourceMappingURL=unique.js.map