169 похожих чатов

Ребята, дурной вопрос, но всё же: почему для массива метод forEach

как минимум не выдает ошибку?

А главный вопрос почему не перезаписываются элементы?

const arr = [ 1 , 2 , 3 ] или arr = [hello', 'world']

arr.forEach((el) => (el = el * 2)) или arr.forEach((el) => (el = el + 'someTextForConcatenation'))

arr // 1, 2 , 3 или 'hello', 'world'



а вот если в массиве объект , тогда спокойно значение el.someProp = можно перезаписати

Правильна ли моя логика немного, что в первом варианте у нас примитив и мы не можем сделать выражения а ля 1 = 1+1 ?

8 ответов

7 просмотров

Не совсем. Примитивы передаются по значению, а обьекты по ссылке. Т.е. el никакого отношения к arr не имеет, в el находиться какое-то число на текущей итерации и ты можешь с ним делать какие-то действия, но сам массив ты не мутируешь.

Dion-Stryzhalko Автор вопроса
Andrey
Не совсем. Примитивы передаются по значению, а обь...

то бишь в пределах итерации могу играться с ним как захочу, но переопределять элемент массива не будет? а с объектами как быть? в el попадает ссылка на объект и изменяя el мы можем менять содержимое объекта на выходе?

Dion Stryzhalko
то бишь в пределах итерации могу играться с ним ка...

el.num и arr[idx] - это конкретные так сказать ячейки и тут ты явно их мутируешь

Dion Stryzhalko
то бишь в пределах итерации могу играться с ним ка...

то бишь в пределах итерации могу играться с ним как захочу, но переопределять элемент массива не будет? Да, если не делаешь так как выше написано

Dion-Stryzhalko Автор вопроса
Dion Stryzhalko
да, понял. Есть ли смысл в подобном?

Не знаю. Я думаю найдется задача когда это будет нужно. Для остального придумали map,reduce

Dion-Stryzhalko Автор вопроса

Метод forEach массива не изменяет массив, он просто выполняет итерацию по нему.

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта