【问题标题】:How to clear the contents of an Array in javascript by clicking a button?如何通过单击按钮清除javascript中数组的内容?
【发布时间】:2016-10-01 00:46:51
【问题描述】:

我有许多按钮,单击这些按钮可以将单词添加到数组中。该数组用于 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 数组还是abcd 数组?
  • 我想清除 url 和 a b c d

标签: javascript arrays button reset


【解决方案1】:

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

概念 1:

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

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

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

script.js:96 Uncaught TypeError:赋值给常量变量。 在 HTMLImageElement.flipcard (script.js:96)

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

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

概念 2:

如果我们直接做url=[],我们基本上是给同一个变量url分配了一个空数组,而旧数组['a','b','c','d']内存堆中的某个地方漫游 strong> 但没有任何引用变量指向它。 由于数组是 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());

【讨论】:

    【解决方案2】:

    要清除数组,只需将其重新声明为空数组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 -->

    【讨论】:

    • getArray 函数有什么作用?
    • @Kar98k - 仅用于演示目的。我应该在答案中说清楚。清除数组后,单击 Get Array getArray() 按钮将清除数组并将其输出到控制台日志以验证 url 数组是否已清除。同样,仅用于演示目的。
    • @cyberbit 谢谢,我试过这个方法,它成功地删除了数组的内容。但是我不是要清除数组,而是要重置它。数组中的 a、b、c、d 是来自其他按钮的变量。是否可以将它们重置而不是删除它们?
    • @Kar98k “重置”是指“重新分配”吗?基本上将url设置回[a,b,c,d]
    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多