¿Por qué no eliminar todos los elementos de la matriz reasignándolos a []?


Muy a menudo hay momentos en los que queremos eliminar todos los elementos de una matriz, como opción, tenemos una lista de tareas y queremos eliminar todas las tareas al mismo tiempo.


Considere la siguiente lista de elementos:


let items = ["tea", "coffee", "milk"];

Para eliminar todos los elementos de una matriz, establecemos su valor en una matriz vacía


items = [];

Esto funciona bien, y encontrará que este ejemplo se usa constantemente. Pero hay un problema con esto ...



:


let items = ["tea", "coffee", "milk"];
let copy = items;

copy , copy items.



console.log(items); // ["tea", "coffee", "milk"]
console.log(copy); // ["tea", "coffee", "milk"]

.


, - , , , .


copy[2] = "oranges";
console.log(items); // ["tea", "coffee", "oranges"]
console.log(copy); // ["tea", "coffee", "oranges"]

items, , , :


items = [];

, items copy


console.log(items); // []
console.log(copy); // ["tea", "coffee", "oranges"]

, items , copy .


, items = [], , copy.


, (array), (object), - , , , .


, , array = [], [] — , .


. obj = {name: 'David'}, obj , , .


let obj = { name: 'David' };
let newObj = obj;
console.log(obj); // { name: 'David' }
console.log(newObj); // { name: 'David' }
obj = null;
console.log(obj); // null
console.log(newObj); // { name: 'David' }

:


  1. 0:
    let items = ["tea", "coffee", "milk"];
    let copy = items;
    console.log(items); // ["tea", "coffee", "milk"]
    console.log(copy); // ["tea", "coffee", "milk"]
    items.length = 0;
    console.log(items); // []
    console.log(copy); // []
  2. splice :
    let items = ["tea", "coffee", "milk"];
    let copy = items;
    console.log(items); // ["tea", "coffee", "milk"]
    console.log(copy); // ["tea", "coffee", "milk"]
    //   ,    0     
    items.splice(0, items.length);
    console.log(items); // []
    console.log(copy); // []

, , , items = [];


:


No debemos crear enlaces adicionales para una matriz u objeto, ya que esto puede conducir a un resultado no deseado en el futuro. Si está seguro de que no hay referencias (* y no aparecerá) a la matriz original que necesitamos borrar, entonces puede usar array = [] para borrarla, de lo contrario use cualquiera de los dos métodos anteriores para borrar la matriz.


Hagamos que la web sea mejor.

All Articles