set.ts 557 B

123456789101112131415161718192021222324252627
  1. import { isSet } from 'lodash-es';
  2. export function copySet<T = unknown>(setA: Iterable<T>) {
  3. return new Set(setA);
  4. }
  5. /**
  6. * Set deduplicate
  7. * @param {*} setA
  8. * @param {*} setB
  9. */
  10. export function pullAll(setA: Iterable<any>, setB: Iterable<any>) {
  11. if (setA === setB) {
  12. setB = copySet(setB);
  13. }
  14. if (isSet(setA) && setA.size && isSet(setB) && setB.size) {
  15. for (const item of setB) {
  16. if (setA.has(item)) {
  17. setA.delete(item);
  18. }
  19. }
  20. return setA;
  21. }
  22. return setA;
  23. }