Arrays: copias modificadas
Varios métodos de los arrays modifican el array que los ejecuta. Por ejemplo si tenemos un array llamado lista el método lista.sort( ) modifica el array lista perdiéndose así el original. Lo que llamo copias modificadas se refiere a métodos que copian el array original pero con el contenido modificado
Se trata de los siguientes métodos referidos a ordenaciones y otros cambios en los arrays.
- toSorted() Devuelve una copia del array pero ordenada
- toReversed() Devuelve una copia del array con los elementos invertidos
- toSpliced() Copia de un array con elementos eliminados
- with() Devuelve la copia con un elemento cambiado
Estos métodos procesan el array pero no los modifican sino que crean un nuevo array con los cambios aplicados.
El primero es toSorted( ) Puede recibir una función callbackcomo argumento para utilizar una función de ordenación. Esta función devolverá
- > 0 (positivo)si establecemos que a > b, para orden inverso
- < 0 (negativo) si establecemos que a < b, para orden normal
- = 0 si no va a cambiar el orden
El array original no se modifica, solo se copia pero ordenado. Si no hay argumento los items se convierten en strings y se ordenan alfabéticametne.
let datos=[6,5,4,9,19,17];
let copiaOrdenada;
copiaOrdenada = datos.toSroted();
console.log(copiaOrdenada);
console.log(datos);
Como podrás comprobar si ejecutas este ejemplo el array datos no se modifica, mientras que la copiaOrdenada es una copia con los elementos ordenados
El método toReversed() copia el array original con los elementos en orden inverso. Ojo, no hace una ordenación solo coloca los elementos en un nuevo array desde el último al primero. Simplemente los cambia de lugar.
let edades =[25, 35, 15, 19, 9]];
let copia;
copia = edades.toReversed( );
console.log(copia); // [9, 19,15,35,25]
console.log( edades ); // [25, 35, 15, 19, 9]];
Puedes comprobar que edades no se modifica y que el array copia contiene los datos copiados del original pero en orden inverso.
El méotdo toSpliced() es similar a splice:
- elimina elementos comenzando por el indice (primer argumento) hasta el último (segundo argumento)
- Inserta elementos despues del indice (primer argumento) si el segundo argumento es cero o negativo.
A difrencia de splice los elementos extraídos no son devueltos.
Por último la función with(ind, valor) permite crear una copia del array con un nuevo valor para un elemento del original.
let frutas = Array.of('pera', 'manzana', 'uva');
let compra ;
compra = frutas.with( 0, 'naranjas');
console.log(compra); // ['naranajs', 'manzana', 'uva'];
console.log(frutas ); // ['pera', 'manzana', 'uva']
Al igual que con los anteriores métodos el array priginal no cambia, solo se crea una copia del origina.