> Как преобразовать объект arguments в массив в JavaScript (JavaScript, TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript, TypeScript
> Пример ответа
Объект arguments - это массивоподобный объект, доступный внутри всех (нестрелочных) функций. Он имеет свойство length и индексированные элементы, но не имеет методов массива (например, map, filter, forEach). Для преобразования его в настоящий массив можно использовать несколько способов:
-
Array.from() (ES6, рекомендуется):
JAVASCRIPTfunction example() {const args = Array.from(arguments);// теперь args - полноценный массив} -
Spread-оператор (ES6):
JAVASCRIPTfunction example() {const args = [...arguments];} -
Array.prototype.slice.call() (классический способ, ES5):
JAVASCRIPTfunction example() {const args = Array.prototype.slice.call(arguments);} -
Array.prototype.concat.apply() (менее распространённый):
JAVASCRIPTfunction example() {const args = Array.prototype.concat.apply([], arguments);}
Важно: В стрелочных функциях объект arguments не существует. Если вы используете TypeScript, лучше явно задать типы параметров через rest-параметры:
TYPESCRIPTfunction example(...args: number[]) {// args уже массив}
Наиболее современный и читаемый способ - Array.from() или spread-оператор. Выбор зависит от поддержки окружения (для старых браузеров подойдёт slice).
> Похожие задачи по frontend
Как работает перегрузка функций в TypeScript
Зачем в setState передавать callback вместо значения
Почему нельзя использовать typeof B как тип напрямую в TypeScript?
Как происходит билд в JavaScript/TypeScript проектах
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью