set.ts 581 B

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