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