Какой код на JavaScript выполняет три последовательные операции: удаляет повторяющиеся элементы из массива чисел, умножает оставшиеся уникальные значения на 10 и вычисляет итоговую сумму полученных результатов?

28.02.2026 20:16
Обновлено: 01.03.2026 09:14

Подробное объяснение

Правильный код использует цепочку методов массива: filter() для удаления дубликатов через сравнение индекса элемента с индексом его первого вхождения, map() для умножения каждого уникального числа на 10 и reduce() с начальным значением 0 для корректного суммирования. Ключевой момент — filter((n, i, arr) => arr.indexOf(n) === i) оставляет только первое появление каждого числа, эффективно устраняя повторы. Остальные варианты содержат ошибки: некорректные начальные значения в reduce(), неправильные условия фильтрации или ошибочную логику обработки элементов.

Часто задаваемые вопросы (FAQ)

1 Как удалить дубликаты из массива в JavaScript?
Для удаления дубликатов можно использовать метод filter() с проверкой arr.indexOf(n) === i, который оставляет только первое вхождение каждого элемента, или использовать Set: [...new Set(array)].
2 Как работает метод reduce() в JavaScript?
Метод reduce() применяет функцию к каждому элементу массива, накапливая результат. Он принимает функцию-редуктор и начальное значение аккумулятора, что важно для корректного суммирования чисел.
3 В чём разница между map() и forEach()?
Метод map() создаёт новый массив, преобразуя каждый элемент исходного, а forEach() просто выполняет функцию для каждого элемента без возврата нового массива. Для цепочек преобразований предпочтительнее map().

Типичные ошибки

1 Некорректное начальное значение в reduce()
Использование reduce((s, n) => s + n, 1) вместо reduce((s, n) => s + n, 0) приводит к завышению суммы на 1, так как аккумулятор инициализируется единицей, а не нулём.
2 Неверная логика удаления дубликатов
Применение filter(n => n === n) не фильтрует дубликаты, поскольку условие всегда истинно для чисел (кроме NaN), оставляя массив без изменений и искажая итоговый результат.
3 Ошибка в функции редьюсера
Использование reduce((s, n) => s, 0) игнорирует текущий элемент n, всегда возвращая начальное значение 0, что приводит к нулевой сумме независимо от данных в массиве.

Установите расширение Poresh.Ai

Решайте тесты мгновенно с помощью искусственного интеллекта прямо в браузере

Автоматическое распознавание вопросов
ИИ-анализ и подробные объяснения
Работает на любых образовательных платформах
Безопасно и конфиденциально