UNPKG

@extra-array/union-update

Version:

Gives values present in any array.

42 lines (41 loc) 950 B
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 };