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.log
s 打印出来的东西。我是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() 不是函数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章