You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.scanMap = exports.clean = exports.unique = exports.uniqueFilterFnGenerator = exports.uniqueFn = void 0; |
|
// alias for uniqueFilterFnGenerator |
|
exports.uniqueFn = uniqueFilterFnGenerator; |
|
function uniqueFilterFnGenerator(extractFn) { |
|
const values = new Set(); |
|
const extractor = extractFn || ((a) => a); |
|
return (v) => { |
|
const vv = extractor(v); |
|
const ret = !values.has(vv); |
|
values.add(vv); |
|
return ret; |
|
}; |
|
} |
|
exports.uniqueFilterFnGenerator = uniqueFilterFnGenerator; |
|
function unique(src) { |
|
return [...new Set(src)]; |
|
} |
|
exports.unique = unique; |
|
function clean(src) { |
|
const r = src; |
|
for (const key of Object.keys(r)) { |
|
if (r[key] === undefined) { |
|
delete r[key]; |
|
} |
|
} |
|
return r; |
|
} |
|
exports.clean = clean; |
|
function scanMap(accFn, init) { |
|
let acc = init; |
|
let first = true; |
|
return function (value) { |
|
if (first && acc === undefined) { |
|
first = false; |
|
acc = value; |
|
return acc; |
|
} |
|
acc = accFn(acc, value); |
|
return acc; |
|
}; |
|
} |
|
exports.scanMap = scanMap; |
|
//# sourceMappingURL=util.js.map
|