Вот простая строка с O(N)
, при условии:
- вы находитесь в современном браузере или в node.js
- ваш массив - строки
Тогда
> Object.keys([{}].concat(['a', 'b', 'a']).reduce((l,r) => l[r] = l ))
[ 'a', 'b' ]
Пояснение
Исходный набор данных, предположим, что он поступает из внешней функции
let data = ['a', 'b', 'a']
Мыхотим добавить объект к началу массива
let setup = [{}].concat(data)
Далее мы хотим уменьшить массив до единого значения.
На предыдущем шаге мы добавили объект к массиву так,что мы можем прикрепить все значения к этому объекту в качестве ключей на этом этапе.Конечным результатом является объект с уникальным набором ключей.
let reduced = setup.reduce((l,r) => l[r] = l)
Мы устанавливаем l[r] = l
, потому что в javascript значение выражения присваивания возвращается, когда оператор присваивания используется в качестве выражения.
Далее мы хотим получить ключи этого объекта
let keys = Object.keys(setup)
, который представляет собой набор уникальных значений исходного массива
['a', 'b']