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

时间:2016-06-01 14:56:23

标签: javascript arrays button reset

我有许多按钮,点击时会向一个数组添加一个单词。此数组用于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变量,这样就可以创建一个新的数组。我创建了一个刷新整个页面的按钮,但这并不理想,因为每次我的网页都需要重新加载才能清除数组!

2 个答案:

答案 0 :(得分:4)

要清除数组,只需将其重新声明为空数组url = []

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

function clearArray() {
  return url = []
}
function getArray() {
  return console.log(url)
}
&#13;
<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 -->
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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

概念1:

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

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

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

script.js:96未捕获的TypeError:分配给常量变量。 在HTMLImageElement.flipcard(script.js:96)

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

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

概念2:

如果我们直接执行url=[],则基本上是将一个空数组分配给同一变量 url ,而旧数组['a','b','c','d']则在中漫游内存堆,但没有指向它的任何引用变量。 由于数组是javascript中的对象,因此我们不认为在程序中使对象指向任何东西不是一种好习惯。因为这可能导致在我们的程序中称为内存泄漏的概念。

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

以下是有关如何执行此操作的完整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());