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?
const numbers = [1, 2, 3, 4, 5]; const reverse = (array) => { const reversed = []; for (const [index, element] of numbers.entries()) reversed[array.length - index - 1] = element; return reversed; } console.log(reverse(numbers)); // [ 5, 4, 3, 2, 1 ] Podemos usar un bucle for ... of en las entradas de la matriz que queremos invertir y empujar el elemento a la posición deseada de la matriz.
Para calcular la posición que queremos, podemos simplemente hacer array length - index - 1 .
Esto significa que si tenemos una matriz de 5 elementos, [1, 2, 3, 4, 5] e iteramos, estaremos haciendo...
5 - 0 - 1 = 4 para el índice del primer elemento.5 - 1 - 1 = 3 para el índice del segundo elemento.5 - 2 - 1 = 2 para el índice del tercer elemento.5 - 3 - 1 = 1 para el índice del cuarto ítem.5 - 4 - 1 = 0 para el índice del quinto ítem.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));