iteragain
Version:
Javascript Iterable/Iterator/Generator-function utilities.
36 lines • 1.32 kB
JavaScript
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;
return new FilterIterator(it, function (value) {
value = iteratee(value);
if (!lastValue_1 || value !== lastValue_1) {
lastValue_1 = value;
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