Вопрос №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

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

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

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

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 8 июня
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 8 июня
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 8 июня
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 8 июня
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 8 июня
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 8 июня
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 8 июня
профессия
от 10 080 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 8 июня
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 8 июня
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время
профессия
от 6 300 ₽ в месяц
новый
Автоматизированное тестирование веб-приложений на JavaScript
10 месяцев
с нуля
в разработке
дата определяется