function copyArrayAndManipulate(array, instructions) { return array.map(function (element, index, arr) { return arr.push(instructions(element)); }); } function multiplyBy2(input) { return input * 2; } var result = copyArrayAndManipulate([1, 2, 3], multiplyBy2); console.log(result)No sé por qué el resultado es igual a [4,5,6], lo depuré pero no puedo ver el valor 5 incluso durante la depuración. Solo trato de entender cómo surgió esta matriz [4,5,6], sin pedir alguna solución.
El método map le devolverá una nueva matriz. Por lo tanto, no debe presionar para map arr . Ya obtienes una matriz multiplicada
function copyArrayAndManipulate(array, instructions) { return array.map(function (element, index, arr) { return instructions(element); // you should not push }); } function multiplyBy2(input) { return input * 2; } var result = copyArrayAndManipulate([1, 2, 3], multiplyBy2);Básicamente, estás reescribiendo map usando map . map ya hace lo que usted llama copyArrayAndManipulate , por lo que parece un ajuste inútil de una función que ya existe. Si desea que su código funcione, simplemente debe eliminar arr.push y devolver las instructions(element) dentro de la función de map . La función map devolverá una nueva "copia" de la matriz y "manipulará" la matriz con la función que le des, pasándote cada "elemento".