UNPKG

sequency

Version:

Functional sequences for processing iterable data in JavaScript

40 lines 1.43 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.DistinctBy = void 0; var Sequence_1 = require("./Sequence"); var DistinctByIterator = /** @class */ (function () { function DistinctByIterator(iterator, selector) { this.iterator = iterator; this.selector = selector; this.set = new Set(); } DistinctByIterator.prototype.next = function (value) { for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) { var key = this.selector(item.value); var sizeBeforeAdd = this.set.size; this.set.add(key); if (this.set.size > sizeBeforeAdd) { return { done: false, value: item.value }; } } this.set.clear(); return { done: true, value: undefined }; }; return DistinctByIterator; }()); var DistinctBy = /** @class */ (function () { function DistinctBy() { } /** * Returns a new sequence which discards all elements with duplicate items determined * by the given `selector`. * * @param {(item: T) => K} selector * @returns {Sequence<T>} */ DistinctBy.prototype.distinctBy = function (selector) { return (0, Sequence_1.createSequence)(new DistinctByIterator(this.iterator, selector)); }; return DistinctBy; }()); exports.DistinctBy = DistinctBy; //# sourceMappingURL=distinctBy.js.map