Рассмотрим этот код:
class myClass {
constructor(obj) {
this.content = "mapped to myClass";
}
}
array = [{content:"first"},{content:"second"}];
array.map(o=> {o_mapped = new myClass(); return o_mapped} ); //1*
console.info(JSON.stringify(array));
array = array.map(o=> {o_mapped = new myClass(); return o_mapped} ); //2*
console.info(JSON.stringify(array));
У меня есть этот вывод, и я не знаю, почему 2 * не работает как 1 *
[{"content":"first"},{"content":"second"}]
[{"content":"mapped to myClass"},{"content":"mapped to myClass"}]
Почему так происходит? Я использовал версию 1 * для простых манипуляций с данными массива, и она работает



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


map возвращает новый массив, он не манипулирует оригиналом.
* 2 работает, потому что вы переназначаете array, а затем распечатываете новый массив.
Если бы вы использовали map только для итерации и выполнения побочных эффектов, как при использовании forEach, тогда вам не нужно было бы переназначать массив.
карта всегда возвращает новый массив
В этом состоянии вы устанавливаете контент, а затем повторяете его с помощью функции карты
array = [{content:"first"},{content:"second"}];
array.map(o=> {o_mapped = new myClass(); return o_mapped} ); //1*
console.info(JSON.stringify(array));
В этом состоянии вы используете содержимое по умолчанию, а затем повторяете его функцией карты.
array = array.map(o=> {o_mapped = new myClass(); return o_mapped} ); //2*
console.info(JSON.stringify(array));
Начните с чтения документации:
Array.prototype.map()