Skip to content

fightingdreamer/npm-set-intersection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

set-intersection

Description

Missing itersection operation for Set.

Second implementation can do intersection operation between any number of sets.

Third implementation can do intersection operation between any combination of sets.

Install

bun add @fightingdreamer/set-intersection

Usage

import {intersection} from '@fightingdreamer/set-intersection'

const a = new Set([1,2,3])
const b = new Set([3,4,5])
const result = intersection(a, b)
const expect = [3]
for (const value of expect) {
  console.assert(result.has(value))
}
import {intersectionMany} from '@fightingdreamer/set-intersection'

const sets = [
  new Set([1,2,3]),
  new Set([2,3,4]),
  new Set([3,4,5])
][Symbol.iterator]()
const result = intersectionMany(sets)
const expect = [3]
for (const value of expect) {
  console.assert(result.has(value))
}
import {intersectionPartial} from '@fightingdreamer/set-intersection'

const sets = [
  new Set([1,2,3]),
  new Set([2,3,4]),
  new Set([3,4,5])
][Symbol.iterator]()
const result = intersectionPartial(sets, 2)
const expect = [2,3,4]
for (const value of expect) {
  console.assert(result.has(value))
}

Usage (node / commonjs)

const {intersection} = require('@fightingdreamer/set-intersection')

const a = new Set([1,2,3])
const b = new Set([3,4,5])
const result = intersection(a, b)
const expect = [3]
for (const value of expect) {
  assert(result.has(value))
}
const {intersectionMany} = require('@fightingdreamer/set-intersection')

const sets = [
  new Set([1,2,3]),
  new Set([2,3,4]),
  new Set([3,4,5])
][Symbol.iterator]()
const result = intersectionMany(sets)
const expect = [3]
for (const value of expect) {
  assert(result.has(value))
}
const {intersectionPartial} = require('@fightingdreamer/set-intersection')

const sets = [
  new Set([1,2,3]),
  new Set([2,3,4]),
  new Set([3,4,5])
][Symbol.iterator]()
const result = intersectionPartial(sets, 2)
const expect = [2,3,4]
for (const value of expect) {
  assert(result.has(value))
}

Functions

function intersection<T>(a: Set<T>, b: Set<T>): Set<T>

Will return overlapping items from a and b.

function intersectionMany<T>(sets: Iterable<Set<T>>): Set<T>

Will return overlapping items when item exist in every Set.

function intersectionPartial<T>(
  sets: Iterable<Set<T>>,
  minCount: number,
): Set<T>

Will return overlapping items when item exist in at least minCount number of sets.

About

MIssing intersection operation over Iterable.

Resources

Stars

Watchers

Forks

Packages

No packages published