iter-tools-es
Version:
The iterable toolbox
25 lines (20 loc) • 446 B
JavaScript
const {
iterableCurry
} = require('../../internal/iterable.js');
function* __distinct(source, selector) {
const set = new Set();
for (const value of source) {
const key = selector ? selector(value) : value;
if (set.has(key)) {
continue;
}
set.add(key);
yield value;
}
}
exports.__distinct = __distinct;
const distinct = iterableCurry(__distinct, {
minArgs: 0,
maxArgs: 1
});
exports.distinct = distinct;