Я пытаюсь сделать так, чтобы эта карта функционировала как более разрушительная версия самой себя. Это означает, что функция карты изменяет исходный массив вместо нового.
function map (array, callback) {
var result = []
for (var i = 0; i < array.length; i++) {
result.push(callback(array[i]))
}
console.info("Array",array, "Result",result)
return result
}
console.info возвращает:
Array [ 5, 2, 1 ] Result [ 6, 3, 2 ]
Массив должен быть [5,2,1], а сейчас он [6,3,2].



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


Ваш var result = [] создает новый массив. Если вы хотите изменить старый массив, вы должны назначать к нему (присвоить свойствам параметра array):
function map (array, callback) {
array.forEach((item, i) => {
array[i] = callback(item);
});
return array;
}
const arr = [1, 2];
map(arr, e => e + 1);
console.info(arr);Обратите внимание, что вызов этой функции map может немного ввести в заблуждение, потому что Array.prototype.map делает что-то подобное, но создает полностью отдельный массив, как это делает исходный код. Возможно, вы захотите назвать эту функцию как-то иначе, чем map, возможно, changeEvery или что-то в этом роде.
Вы можете следовать этому коду... Надеюсь, ваша проблема решена
function map(array, callback) {
var result=[]
for (var i = 0; i < array.length; i++) {
result.push(callback(array[i]))
}
console.info(result)
}
map([5, 2, 1], (value) => {
return value
})
спасибо за ответ на ОП; однако, поскольку это ответ на довольно старый вопрос, вы можете отредактировать свой пост и немного объяснить свой ответ.
Если вы стремитесь к модификации на месте, ничего не возвращайте.