Home > Enterprise >  Aarray.map return value does not makes sense
Aarray.map return value does not makes sense

Time:10-04

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)

I do not know why result equals to [4,5,6], i debugged it but i can't see the value 5 even while debugging. Just trying to understand how this [4,5,6] array came from, not asking for some solution.

CodePudding user response:

map method will return you a new array. So you should not push to arr inside map method. You already get multiplied array

  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);

CodePudding user response:

You are basically rewriting map using map. map already does what you call copyArrayAndManipulate, so it seems like a useless wrap around a function that already exists. If you want your code to work, you simply need to remove arr.push and just return instructions(element) within the map function. The map function will return a new "copy" of the array and "manipulate" the array with the function you give it, passing you the each "element".

  • Related