Last active
May 25, 2021 08:28
-
-
Save bartwttewaall/c7983f5e3bc2df26e5d3be63f5cd2fc4 to your computer and use it in GitHub Desktop.
Set opterations on 2 arrays: intersection, difference, union
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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