Estoy un poco atascado con este problema. Estoy tratando de escribir una función que tome un índice y mueva el elemento con ese índice en una matriz a la primera posición mientras mantiene el orden subsiguiente de los otros elementos.
const unorderedArr = [item1, item2, item3, item4] const reorderArr = (i, arr) => { ... } const reorderedArr = reorderArr(2, unorderedArr) // [item3, item4, item1, item2]¡Feliz por cualquier sugerencia!
Podría usar un intercambio con el elemento anterior hasta que el índice sea cero.
const reorderArr = (array, i) => { while (i) { [array[i], array[i - 1]] = [array[i - 1], array[i]]; i--; } return array; }; console.log(...reorderArr(['item1', 'item2', 'item3', 'item4'], 2));El método slice(i) devolverá una matriz después del índice (incluido), y slice(0, i) devolverá una matriz desde el comienzo de la matriz hasta el índice (excluido). Entonces el resultado será: ["item3","item4","item1","item2"]
const unorderedArr = ['item1', 'item2', 'item3', 'item4'] const reorderArr = (i, arr) => { return [...arr.slice(i), ...arr.slice(0,i)]; } const reorderedArr = reorderArr(2, unorderedArr); console.log(reorderedArr)Simplemente puedes hacer así
const unorderedArr = ["item1", "item2", "item3", "item4"]; const reorderArr = (i, arr) => { const movingElement = arr[i]; // get the element at index i arr.splice(i, 1); // remove the element from index i next to one ( item 3) arr.unshift(movingElement); // add the element to the beginning of the array return arr; }; const reorderedArr = reorderArr(2, unorderedArr); console.log("reorderedArr", reorderedArr); // [ 'item3', 'item1', 'item2', 'item4' ]