Вопрос №55971 от пользователя Анастасия Синицына в уроке «Spread-оператор и создание новых массивов», курс «JS: Массивы»

Анастасия Синицына

Помогите, абсолютно запуталась. Не могу схватить логику в работе цикла. Ощущение, что когда нуно применять spread-оператор, нужно каждый раз создавать по сути новый массив, с новым именем, их так наплодится куча - и что возвращать в итоге, когла цикл завершен? Как будто нужно каждый раз создавать новый результирующий массив, если нужно выпрямлять уровень. В этом месте очень сильный ступор.

5 0

Андрей Шляпников

Анастасия Синицына, Добрый день! Если вам требуется помощь в решении упражнения то надо отправить код на ревью, так можно лучше понять что у вастам происходит, как это сделать мжно посмотреть сдесь а вообще там логика логика такая:

  1. перебераем массив если элемент массива тоже массив то добавляем его в резельтирующий массив используя spred: result.push(...element), но метод push мутирует массив по этому лучше сделать так: result = [ ...result, ...element], понятно что result уже обявлен
  2. если элемент массива не массив то просто его добовляем
0

Анастасия Синицына

Как работает эта чать - result = [ ...result, ...element]? как мы можем заранее объявить result? Если оъявить просто как пустуя переменную, то непонятно, как добавлять элемент, не являющийся массивом. А если как объявить result как пустой массив, разве можно его так меянть через spread-оператор? Нам же нужно при этом создать другой массив. Пока ревью такое.

0

Андрей Шляпников

Анастасия Синицына, вам надо было скинуть ссылку на ревью, а вы скинули ссылку на упражнение)

  1. То есть в начале функции вы обявляете const result = [ ] 2 допустим наш масив выглядит так [1, [1, 2] ]
  2. первый элемент примитивное значение по этому происходит следующие [...[ ], 1 ], то есть мы таким образом в result добавим сам результ(который разложится спомощю rest, а так как он пустой то в массив добавится только единица
  3. на следующей итерации наш елемент сам массив по этому мы применяем rest и к нему [...[1], ...[1, 2]] => [1, 1, 2 ]

А если как объявить result как пустой массив, разве можно его так меянть через spread- оператор? массивы можно менять, неизменяемые в JS только примитивные типы данных(числа, строки)

0

Анастасия Синицына

Андрей Шляпников, Да, но тогда объявлять пустой массив надо через let, иначе не поменяешь потом через spread. У меня получилось, кстати, спасибо! Ссылка на ревью.

1

Андрей Шляпников

Анастасия Синицына, массивы менять можно даже если это константа, только вот переопределить эту констант уже нельзя

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
1 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
1 июня 5 месяцев