ts-prime
Version:
A utility library for JavaScript and Typescript.
30 lines (29 loc) • 796 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var purry_1 = require("./purry");
var _reduceLazy_1 = require("./_reduceLazy");
function uniqBy() {
return purry_1.purry(_uniqBy, arguments, lazyUniqBy);
}
exports.uniqBy = uniqBy;
function _uniqBy(array, transformer) {
return _reduceLazy_1._reduceLazy(array, lazyUniqBy(transformer));
}
function lazyUniqBy(transformer) {
var set = new Set();
return function (value) {
var appliedItem = transformer(value);
if (set.has(appliedItem)) {
return {
done: false,
hasNext: false,
};
}
set.add(appliedItem);
return {
done: false,
hasNext: true,
next: value,
};
};
}