@monstermann/fn
Version:
A utility library for TypeScript.
33 lines (31 loc) • 887 B
JavaScript
import { dfdlT } from "@monstermann/dfdl";
//#region src/set/difference.ts
/**
* `difference(target, source)`
*
* Returns a new set containing all values from the `target` set that are not present in the `source` set.
*
* ```ts
* difference(new Set([1, 2, 3]), new Set([2, 3, 4])); // Set([1])
* difference(new Set([1, 2]), new Set([3, 4])); // Set([1, 2])
* ```
*
* ```ts
* pipe(new Set([1, 2, 3]), difference(new Set([2, 3, 4]))); // Set([1])
* pipe(new Set([1, 2]), difference(new Set([3, 4]))); // Set([1, 2])
* ```
*/
const difference = dfdlT((target, source) => {
if (source.size === 0) return target;
for (const value of target) if (source.has(value)) {
const result = /* @__PURE__ */ new Set();
for (const value$1 of target) {
if (source.has(value$1)) continue;
result.add(value$1);
}
return result;
}
return target;
}, 2);
//#endregion
export { difference };