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

filter своими руками

Условие

Реализуй filter(arr, fn) без использования встроенных методов массива. Колбэк получает (значение, индекс, массив), результат приводится к булеву.

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

  • фильтрует

  • результат приводится к булеву

  • индекс передаётся

  • дыры пропускаются

  • массив передаётся третьим аргументом

Как подойти

Запрет на методы заставляет вспомнить, что filter делает на самом деле: три аргумента колбэка, приведение результата к булеву, пропуск дыр разреженного массива. Последнее почти никто не помнит, а именно это отличает полифилл от наивной копии. Обрати внимание: −1 + 1 даёт 0, и такой элемент отсеивается - тест на приведение типов ловит это.

Подсказки: 3
  1. Три аргумента колбэка, а не один.
  2. i in arr отличает дыру от значения undefined.
  3. Присваивание по индексу вместо push - push тоже метод массива.

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

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