here is my code:
const reverseArr = (...args) => {
let length = args.length - 1
let reversed = []
let i = 0
for (let a = length - i; i <= length; i++) {
args[a] = reversed[i]
}
return reversed
}
console.log( reverseArr(3, 5, 4, 1) )
What's the problem here? Does it about value of 'i' or lenght?
function reverse(arr){
// get length
var len = arr.length;
// create new array
var newArr = [];
// loop through array
for(var i = len - 1; i >= 0; i--){
// push to new array
newArr.push(arr[i]);
}
// return new array
return newArr;}
reverse([1,2,3,4,5]);
try this.
There are multiple issues :
for initialisation happens once, so if you do let a = lemgth - i, it doesn't update a any further, even though i changes.reversed array, which is empty itself.(arr).I tried to fix your snippet, and also adding better approach:
const reverseArr = (...args) => {
let length = args.length - 1
let reversed = []
let i = 0
// update 'a' as soon as you update 'i'
for(let a = length - i; i <= length; i++, a = length - i){
// update the standby array 'reveresed'
reversed[i] = args[a]
}
// print the reversed array instead of 'args'
console.log(reversed)
}
// Alternate approach (in-place reverse)
const reverseInput = (...args) => {
let left = 0, right = args.length - 1;
while(left <= right) {
// swap the left and right elements in array
[args[left], args[right]] = [args[right], args[left]] ;
left++;
right--;
}
console.log(args);
}
// Approach 1
console.log(reverseArr(3, 5, 4, 1))
// Approach 2
console.log(reverseInput(3,5,4,1));
simply...
const reverseArr = (...args) => Array.from({length:args.length},_=>args.pop())
console.log( reverseArr(3, 5, 4, 1) )
if you want to use an array as argument and let it untouched:
const reverseArr = arr => Array.from({length:arr.length},(_,i)=>arr[(arr.length-++i)])
let arrOrigin = [3,5,4,1]
let arrResult = reverseArr( arrOrigin )
console.log( arrOrigin )
console.log( arrResult )
.as-console-wrapper {max-height: 100%!important;top:0 }