UNPKG

iteragain

Version:

Javascript Iterable/Iterator/Generator-function utilities.

37 lines 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.unique = unique; const toIterator_1 = require("./toIterator"); const FilterIterator_1 = require("./internal/FilterIterator"); function unique(...args) { var _a; if (typeof args[0] === 'function' || !args.length) return it => unique(it, args[0]); const it = (0, toIterator_1.default)(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; let hasLastValue = false; return new FilterIterator_1.default(it, value => { value = iteratee(value); if (!hasLastValue || value !== lastValue) { lastValue = value; hasLastValue = true; return true; } return false; }); } const seen = new Set(); return new FilterIterator_1.default(it, value => { value = iteratee(value); if (!seen.has(value)) { seen.add(value); return true; } return false; }); } exports.default = unique; //# sourceMappingURL=unique.js.map