如何在JavaScript中清空数组? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaScript中清空数组? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我使用ArrayList作为我的数组,

let ArrayList   =  ['a','b','c','d','e','f'];

我在方法1和方法2之间感到困惑,因为在两种情况下我都引用了另一个ArrayList,你也可以通过这个链接检查日志https://jsfiddle.net/mnjsnj/u1fms8wx/2/

方法1

let Method1 = ArrayList;  // Referenced arrayList by another variable 
ArrayList= []; // Empty the array 
console.log(Method1); // Output ['a','b','c','d','e','f']

方法2

let Method2 = ArrayList;  // Referenced arrayList by another variable 
ArrayList.length = 0; // Empty the array by setting length to 0
console.log(Method2 ); // Output []
答案

ArrayList在第一种方法后被清空,所以你要为Method2分配一个空数组

let ArrayList = ['a', 'b', 'c', 'd', 'e', 'f'];

let Method1 = ArrayList; // Referenced arrayList by another variable 
ArrayList = []; // Empty the array 
console.log(Method1); // Output ['a','b','c','d','e','f']

console.log('ArrayList after Method1....!' , ArrayList)
// here an empty array is assinged to Method2
let Method2 = ArrayList; // Referenced arrayList by another variable 
ArrayList.length = 0; // Empty the array by setting length to 0
console.log(Method2); // Output []
另一答案

理解这里发生的事情的技巧是理解变量在javascript中的工作方式以及赋值(=)运算符的作用。

变量只是内存位置的绑定名称。

当我们通过=运算符为变量赋值时,我们只更改变量所指向的内容,我们不会更改现有内存位置的实际数据,我们只是让变量不再指向它。

// Method1 now points to the same memory location as ArrayList
let Method1 = ArrayList;
// ArrayList variable now points to a new memory location containing an empty array
ArrayList = []; 
// Method1 is still pointing to the original memory location so the array is unaffected
console.log(Method1);

在第二个示例中,您通过将ArrayList更改为length直接影响0指向的内存位置的数据。

// point Method2 variable to the same location as ArrayList variable
let Method2 = ArrayList; 
// change the data stored at the location ArrayList is pointing to
ArrayList.length = 0; // Empty the array by setting length to 0
// Since Method2 is also pointing to that location, we see the empty array
console.log(Method2); // Output []

以上是关于如何在JavaScript中清空数组? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript - 通过引用传递时清空数组/对象问题

javascript 几个易错点记录

ThinkPHP如何清空静态数组?

在 Javascript 中,如何检查数组是不是有重复值?

javascript中清空数组的三种方式

如何在javascript中从多个数组中获取单个数组[重复]