Array manipulation with Sets
[...new Set(arr)] // unique array
[...new Set(arr)].sort() // unique array sorted
// Union (deduped):
const union = (a1, a2) => [...new Set(a1.concat(a2))];
// Union arbitrary number of arrays:
[a1, a2, a3, ...].reduce((total, arr) => union(total, arr), []);
// Intersection (deduped):
const intersection = (a1, a2) => [...new Set(a1.filter(x => a2.includes(x)))];
// flatten array with any depth
const flat = (arr) => arr.reduce((a, value) => a.concat(
Array.isArray(value) ? flat(value) : value
), []);
Top comments (1)
Note on unions:
[...new Set(a1, a2))]
works for same type, failed with[1], ['x']
, updated to useconcat
instead.Use Set only to dedupe, use Array for manipulation.