aquí está mi código:
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) )¿Cuál es el problema aquí? ¿Se trata del valor de 'i' o de la longitud?
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;}inversa ([1,2,3,4,5]);
prueba esto.
Hay varios problemas:
for inicialización ocurre una vez, por lo que si let a = lemgth - i , no se actualiza más, aunque i cambie.reversed , que está vacía.(arr) .Traté de arreglar su fragmento y también agregué un mejor enfoque:
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));simplemente...
const reverseArr = (...args) => Array.from({length:args.length},_=>args.pop()) console.log( reverseArr(3, 5, 4, 1) )si desea usar una matriz como argumento y dejarla intacta:
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 }