@extra-array/union-update
Version:
Gives values present in any array.
42 lines (41 loc) • 950 B
JavaScript
function id(v) {
return v;
}
function cmp(a, b) {
return a < b ? -1 : (a > b ? 1 : 0);
}
function from$$1(x) {
return Array.isArray(x) ? x : [...x];
}
function from(vs, fm = null) {
return new Set(fm ? from$$1(vs).map(fm) : vs);
}
function unionMap$(x, y, fm = null) {
var s = from(x, fm);
var fm = fm || id, i = -1;
for (var v of y) {
var v1 = fm(v, ++i, y);
if (!s.has(v1))
x.push(v);
}
return x;
}
function unionDual$(x, y, fc = null, fm = null) {
var fc = fc || cmp, fm = fm || id;
var x1 = x.map(fm), j = -1;
y: for (var v of y) {
var v1 = fm(v, ++j, y);
for (var u1 of x1)
if (fc(u1, v1) === 0)
continue y;
x.push(v);
}
return x;
}
function union$(x, y, fc = null, fm = null) {
if (fc)
return unionDual$(x, y, fc, fm);
else
return unionMap$(x, y, fm);
}
export { union$ as default };