如何通过单击按钮清除 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());
我有很多按钮,单击它们会向数组中添加一个单词。该数组用于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());