Код Senior Реализация с нуля обновлено

Уникальные без Set и Map

Условие

Убери дубликаты, сохранив порядок первого появления. Set и Map использовать нельзя.

Что проверяют тесты

  • убирает дубликаты

  • ключ constructor не ломает

  • нуль и строка ноль различаются

  • пустой массив

Как подойти

Запрет на Set превращает разминку в задачу с двумя ловушками. Первая: обычный объект как словарь наследует свойства прототипа, и seen['constructor'] истинно ещё до первого добавления. Вторая: ключи приводятся к строке, поэтому число 0 и строка '0' станут одним ключом. Обе лечатся - Object.create(null) и составной ключ с типом. Ровно поэтому в современном коде для таких словарей и берут Map.

Подсказки: 3
  1. Обычный объект наследует toString, constructor и другие ключи - они дадут ложное срабатывание.
  2. Object.create(null) создаёт словарь без прототипа.
  3. Ключи объекта - строки, поэтому 0 и '0' схлопнутся, если не добавить тип.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.