Zichen Ma Zichen Ma - 11 months ago 78
Javascript Question

javascript reverse an array without using reverse()

I want to reverse an array without using reverse() function like this:

function reverse(array){
var output = [];
for (var i = 0; i<= array.length; i++){
output.push(array.pop());
}

return output;
}

console.log(reverse([1,2,3,4,5,6,7]));


However, the it shows [7, 6, 5, 4] Can someone tell me, why my reverse function is wrong? Thanks in advance!

Answer Source

array.pop() removes the popped element from the array, reducing its size by one. Once you're at i === 4, your break condition no longer evaluates to true and the loop ends.


One possible solution:

function reverse(array) {
  var output = [];
  while (array.length) {
    output.push(array.pop());
  }

  return output;
}

console.log(reverse([1, 2, 3, 4, 5, 6, 7]));