如何通过单击按钮清除 javascript 中数组的内容?

How to clear the contents of an Array in javascript by clicking a button?

我有很多按钮,单击它们会向数组中添加一个单词。该数组用于url名称下载文件:

 <button id="button9" onclick="myFunction7();"</button>

 <script>
 var a = []; 
 function myFunction7() { 
 a.push("h"); 
 }

 <button id="button10" onclick="myFunction8();"</button>

 <script>
 var b = []; 
 function myFunction8() { 
 b.push("h"); 
 } 


 var url = [a,b,c,d];

(我刚刚包含了两个按钮,它们也以相同的格式存在于 c、d 中)

按钮的功能有效并且加载了正确的文件。有没有办法重置 url 变量并清空数组?我想要一个按钮来重置我网页上的 url 变量,以便可以创建一个新数组。我创建了一个刷新整个页面的按钮,但这并不理想,因为每次我的网页都必须重新加载才能清除数组!

要清除一个数组你只需要将它重新声明为一个空数组url = []

var url = ['a', 'b', 'c', 'd'];
console.log(url) // added for example

function clearArray() {
  return url = []
}
function getArray() {
  return console.log(url)
}
<button onclick="clearArray(); alert('Array cleared. Now click getArray() button')">Clear Array</button>
<button onclick="getArray()">Get Array</button> <!-- click me after clearing the array -->

关于这个问题,我想讨论两个想法和概念。

概念一:

ES6 (ECMAScript 2015) 中,我们主要使用 const 关键字声明数组和对象。

const url = ['a','b','c','d'];

在这种情况下,如果我们直接尝试使用 url=[] 清除数组,我们会得到一个错误,看起来像这样。

script.js:96 Uncaught TypeError: Assignment to constant variable. at HTMLImageElement.flipcard (script.js:96)

我们可以用来清除数组内容的另一种方法是使用每个数组都可用的 pop() 方法。

while(url.length>0){
 url.pop();
}

概念二:

如果我们直接做url=[],我们基本上是将一个空数组赋值给同一个变量url,而旧数组['a','b','c','d'] 内存堆 的某处漫游,但没有任何引用变量指向它。 由于数组是 javascript 中的对象,我们认为让对象在我们的程序中不指向任何内容不是一个好习惯。因为这可能会导致我们程序中称为 MEMORY LEAKS 的概念。

注意: 通过在数组上使用 pop() 方法,我们基本上改变了同一个数组 url 本身,无需重新分配它,这样我们也可以停止 内存泄漏。

下面是关于如何做到这一点的完整 js 程序:

var url = ['a', 'b', 'c', 'd'];
console.log(url) // added for example

function clearArray() {
  while(url.length>0){
    url.pop();
 }
  return url;
}
function getArray() {
  return console.log(url)
}

console.log("clearArray function return back an empty array :",clearArray());