JavaScript 的 array.clear() 不是函数吗? [复制]

Posted

技术标签:

【中文标题】JavaScript 的 array.clear() 不是函数吗? [复制]【英文标题】:Is JavaScript's array.clear() not a function? [duplicate] 【发布时间】:2011-04-30 13:13:23 【问题描述】:

当按下“清除”按钮时,我正在尝试清空包含绘制坐标的数组。

当我调用drawnDivs.clear() 时,我收到一个错误,指出它不是一个函数。 drawnDivs 肯定是一个数组,我有 Firebug console.logs 打印出来的东西。我是hosted here。

【问题讨论】:

出于兴趣,您从哪里得到使用 clear() 的想法?它似乎不是 javascript 的一部分。 啊看起来像visual basic :) 谷歌搜索让我来到这里:roseindia.net/java/javascript-array/… 【参考方案1】:

不,不是。但是drawnDivs.length = 0 应该可以。

【讨论】:

如果它是一个真正的数组,而不仅仅是一个类似数组的对象,这将起作用。 @thomasrutter。是的,但它会保留数组上定义的引用和任何其他附加属性和函数。 是的,这仍然是总体上最好的解决方案。老实说,它仍然适用于类似数组的对象,只是不会立即从内存中释放任何现有成员。所以真的只是一个小问题。 @thomasrutter - 一个“arraylike”对象,不是一个数组,首先是 - 所以...(?!)。 可以像数组一样使用但不是数组的对象在 JavaScript 中相当普遍。如果您希望您的数组处理代码与“真实”数组以及可以充当数组的对象一起使用,那么您必须确保它可以处理后者。【参考方案2】:

drawnDivs = [];

【讨论】:

小心,因为这不会修改对对象的其他引用。【参考方案3】:

在 Stack Overflow 问题中得到了回答How do I empty an array in JavaScript?

答案中的两个例子:

var A = ['some', 'values', 'here'];

//Method 1

//(This was my original answer to the question)

A = [];




// Method 2 (as suggested by Matthew Crumley)

A.length = 0

和here is a nice write up 由 Axel Rauschmayer 博士介绍这两种方法。

【讨论】:

引用链接中选择的答案不是正确的解决方案,因为它不会清除引用正在清除的数组的变量。该线程中的正确答案是***.com/a/8134354/206687 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 @AndrewCounts 完成。感谢您的推动。【参考方案4】:

您可以交替使用 Prototype 库,然后使用 Prototype 的 clear() 方法。

【讨论】:

可能是另一种方法,但我认为有很多更简单的方法,无需使用库来清除数组。 是的 - 可以,但它是用大锤杀死苍蝇。【参考方案5】:

一种优化的方法是:

while (arr.pop()) 

见http://jsperf.com/kbk-clear-array/2。

【讨论】:

如果阵列有空槽,这将失败。应该这样做:while (arr.length > 0) arr.pop(); 不,应该是: ` while(arr.length) arr.pop(); `

以上是关于JavaScript 的 array.clear() 不是函数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何解决列表视图中的这个错误?

JavaScript介绍

前端基础-JavaScript的基本概述和语法

不懂急,请问javascript对象的问题?

前端之JavaScript第一天学习-JavaScript 简介

JavaScript-Runoob:JavaScript 语句