Quantcast
Channel: cambia – 100% Private Proxies – Fast, Anonymous, Quality, Unlimited USA Private Proxy!
Viewing all articles
Browse latest Browse all 10

Porque mi objeto cambia en Javascript

$
0
0

Me gustaria saber porque pasa lo siguiente… Haciendo una funcion que toma el valor del medio de tres numeros probe con la primera idea que me vino a la mente es la funcion que esta aqui abajo..

    function valorMedio (inputArray) {         console.log(`arreglo original: [$  {inputArray}]`);         let mid = inputArray.sort((a,b) => a-b)[1]         console.log(`arreglo final: [$  {inputArray}]`);         return inputArray.indexOf(mid)     };      console.log(valorMedio([15, 22, -7]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

sencilla; ordeno el arreglo tomo el segundo numero del arreglo ordenado y lo asigno a una variable y luego busco el indice de este numero en el arreglo original. El problema es que el arreglo muta, independientemente si lo que estoy haciendo es tomando un valor de este ordenado.. Cosa que si hago ej: mid =inputArray.sort((a,b) => a-b).join('') y toda la complicacion de luego no sucede.. Normalmente si quiero cambiar un arreglo que recibo por parametro hago inputArray = inputArray.sort((a,b) => a-b) array = array.modificaciones().

function valorMedio (inputArray) {     console.log(`arreglo original: [$  {inputArray}]`);     let mid = [...inputArray].sort((a,b)=>a-b)[1]          console.log(`arreglo final: [$  {inputArray}]`);     return inputArray.indexOf(mid) };  console.log(valorMedio([15, 22, -7])); console.log(valorMedio([1, -22, 75]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

pense que no era extraño estaba asignando una referencia.. y resolvi haciendo copia del arreglo esta funcion de arriba pero lo raro fue que si hago:

function valorMedio2(a) {     return a.indexOf(a.sort((a, b) => a - b )[1]) }   function valorMedio3(a) {     return a.indexOf(a.concat().sort((a, b) => a - b )[1]) }  console.log('Incorrecto '+valorMedio2([15, 22, -7])); console.log('Correcto '+valorMedio3([15, 22, -7]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

CON EL concat() SOLUCIONO EL PROBLEMA… Que es lo que pasa en Javascript que muta el arreglo???

The post Porque mi objeto cambia en Javascript appeared first on 100% Private Proxies - Fast, Anonymous, Quality, Unlimited USA Private Proxy!.


Viewing all articles
Browse latest Browse all 10

Latest Images

Trending Articles





Latest Images