Removing array duplicates in ES6
Here are 4 ways to filter out duplicates from an array and return only the unique values.
1. Set
Set
is one of the cool thing happening in ES6. It's a new data structure that store unique values of any type. You can iterate through the elements of a set in insertion order. A value in the Set
may only occur once; it is unique in the Set's collection.Set
const array = ['🦄', 1, 2, '🦄', '🦄', 3, 2]
[...new Set(array)]
// ['🦄', 1, 2, 3];
2. Filter
The
filter()
method creates a new array with all elements that pass the test implemented by the provided function.Filter
const array = ['🦄', 1, 2, '🦄', '🦄', 3, 2]
array.filter((item, index) => array.indexOf(item) === index)
// ['🦄', 1, 2, 3];
3. Reduce
In order to understand this option, let's understand what these two methods are doing:
reduce
and includes
.- The
reduce()
method executes a reducer function (that you provide) on each member of the array resulting in a single output value. - The
includes()
method determines whether an array includes a certain value among its entries, returning true or false as appropriate.
Reduce
const array = ['🦄', 1, 2, '🦄', '🦄', 3, 2]
array.reduce((unique, item) => (unique.includes(item) ? unique : [...unique, item]), [])
// ['🦄', 1, 2, 3];
4. lodash
lodash
const array = ['🦄', 1, 2, '🦄', '🦄', 3, 2]
_.uniq(array)
// ['🦄', 1, 2, 3];
Do not forget: The bundle size for lodash@4.17.11 is 24.2kB (minified + gzipped). See here