¿Cómo eliminar el elemento de Javascript Array con método seguro?

Tengo un código :

myarray[150] = 'a'; myarray[80] = 'b'; myarray[122] = 'c'; 

Y entonces :

 myarray.splice(80, 1); myarray[80] = 'b'; 

El resultado de mi código anterior en mi request es:

[150] = 'a'; [80] = 'b'; [121] = 'c';

No entiendo por qué c value tiene 121 como índice. ¿Alguien puede explicar qué pasa con mi código?

6 Solutions collect form web for “¿Cómo eliminar el elemento de Javascript Array con método seguro?”

Tienes que usar:

 delete myarray[80] 

para una eliminación segura

Esta línea de código elimina un elemento de la matriz en el índice 80. Por lo tanto, todos los elementos posteriores a 80 se desplazarán hacia abajo en un índice:

 myarray.splice(80, 1); 

Desea usar el empalme dos veces:

 myarray.splice(80, 1); myarray.splice(80, 0,"b"); 

O no quita, pero anula a nulo / indefinido

 myarray[80]=undefined; 

Sin embargo, este set constará de 117 "indefinidos" que es, como dijo Adam un antipattern. Puede hacer esto:

 var myarray={}; myarray[80]="b"; delete myarray[80]; 

Tiene solo un elemento y, por lo tanto, no consume memory.

Porque cuando inició c en el índice 122, y luego eliminó un elemento de su matriz, su longitud cambió y el último índice ahora es 121 no 122

Como especifica la documentation Array.prototype.splice() , el segundo parámetro es la cantidad de elementos que se eliminarán.

Por lo tanto, al hacer

 myarray.splice(80, 1); 

Solo está eliminando un elemento, en la position 80.

"c" se mueve un índice hacia la izquierda.


Además, haciendo

 myarray[80] = 'b'; 

no agrega otro elemento, pero cambia el valor de uno ya existente.

.splice () elimina un elemento de matriz, pero no lo hace vacío. Por lo tanto, el cambio de índice y 'c' tiene un índice de '121'

Más sobre esto puedes leer aquí

Interesting Posts
Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.