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.