Вопрос №55230 от пользователя Баир Цыдендамбаев в уроке «Цикл for», курс «JS: Массивы»

Баир Цыдендамбаев

Здравствуйте! Не могу понять что не так.

Я вроде выполняю условия задачи.

https://ru.hexlet.io/code_reviews/414611

Или есть какое-то дополнительное?

6 0

Вячеслав Павлов

Баир Цыдендамбаев, здравствуйте.

Создайте новый пустой массив и в цикле заполните его.

1

Баир Цыдендамбаев

Вячеслав Павлов, задание выполнилось. Но не могу понять, в чём принципиальная разница?

0

Вячеслав Павлов

Разница в ссылочной природе массивов. Когда вы присваиваете новому массиву существующий и потом его изменяете, то вы изменяете существующий.

В вашем случае:

const array = ['john', 'smith', 'karl']
names = array;
names === array; // true

После выполнения первого теста мы получаем результат:

[ 'Mr john', 'Mr smith', 'Mr karl' ]
names === array; // true

console.log(names); // [ 'Mr john', 'Mr smith', 'Mr karl' ]
console.log(array); // [ 'Mr john', 'Mr smith', 'Mr karl' ]

Этот массив мы получаем на вход второго теста, соответственно в ошибках теста мы видим:

- Expected  - 3
+ Received  + 3

  Array [
-   "Mrs john",
-   "Mrs smith",
-   "Mrs karl",
+   "Mrs Mr john",
+   "Mrs Mr smith",
+   "Mrs Mr karl",

Цитата из урока 'Ссылки' курса 'JS: Массивы':

  • Проектируя функции, работающие с массивами, есть два пути: менять исходный массив или формировать внутри новый и возвращать его наружу. Какой лучше? В подавляющем большинстве стоит предпочитать второй. Это безопасно. Функции, возвращающие новые значения, удобнее в работе, а поведение программы становится в целом более предсказуемым, так как отсутствуют неконтролируемые изменения данных.

p/s: можно использовать Spread-оператор для копирования массива const names = [...array]

1

Roman Ashikov

Приветствую!

Вячеслав подробно ответил на ваш вопрос. Вам удалось разобраться?

Вячеслав, спасибо за помощь!

1

Баир Цыдендамбаев

Вячеслав Павлов, всё. Теперь понял. Большое спасибо!

0

Баир Цыдендамбаев

Роман Ашиков, да. Всё стало понятно.

0

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

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

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

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

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

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

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