Skip to content

Instantly share code, notes, and snippets.

@bartwttewaall
Last active May 25, 2021 08:28
Show Gist options
  • Save bartwttewaall/c7983f5e3bc2df26e5d3be63f5cd2fc4 to your computer and use it in GitHub Desktop.
Save bartwttewaall/c7983f5e3bc2df26e5d3be63f5cd2fc4 to your computer and use it in GitHub Desktop.
Set opterations on 2 arrays: intersection, difference, union
// Intersection
let intersection = arrA.filter(x => arrB.includes(x));
// Difference
let difference = arrA.filter(x => !arrB.includes(x));
// Symmetrical Difference 1st syntax
let symmetricalDifference = arrA
.filter(x => !arrB.includes(x))
.concat(arrB.filter(x => !arrA.includes(x)));
// Symmetrical Difference 2nd syntax
let left = arrA.filter(x => !arrB.includes(x));
let right = arrB.filter(x => !arrA.includes(x));
let symmetricalDifference = [...left, ...right];
// Union (unique values)
let union = [...new Set([...arrA, ...arrB)];
// Equals (primitive values only)
let isEqual = arrA.every(value => arrB.includes(value)) && arrB.every(value => arrA.includes(value));
// Unique filter 1st syntax
const uniqueFilter = (value, index, array) => array.indexOf(value) === index;
let unique = arrA.filter(uniqueFilter);
// Unique filter 2nd syntax
let unique = [...new Set(arrA)];
// toggle (add/remove) an item in an array
export function toggleInArray<T>(arr: T[], item: T) {
return arr.includes(item) ? arr.filter(i => i !== item) : [...arr, item];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment