为什么不通过将数组的所有元素重新分配给[]来删除它呢?


很多时候,我们想删除数组的所有元素,作为选择,我们有一个任务列表,并且我们希望同时删除所有任务。


考虑以下元素列表:


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

要从数组中删除所有元素,我们将其值设置为空数组


items = [];

这可以很好地工作,并且您会发现该示例一直在使用。但是这有一个问题...



:


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 = [];


:


我们不应为数组或对象创建其他链接,因为这可能导致将来出现不良结果。如果您确定没有需要清除的原始数组的引用(*并且不会出现),则可以使用array = []清除它,否则可以使用以上两种方法之一清除该数组。


让我们改善网络。

All Articles