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