Is JavaScript's array.clear() not a function?
当按下"清除"按钮时,我试图清空一个包含绘制坐标的数组。
当我调用drawnDivs.clear()时,我得到一个错误,它不是一个函数。drawnDivs当然是一个数组,我有firebug console.log的打印输出。它在这里举办。
- 出于兴趣,您从哪里得到了使用clear()的想法?它似乎不是JavaScript的一部分。
- 啊,看起来像是Visual Basic:)
- 一个谷歌搜索让我来到这里:Rosix.NET/Java/JavaScript数组/和Helip;
不,不是。但是drawnDivs.length = 0应该是有效的。
- 如果它是一个真正的数组,而不仅仅是一个类似数组的对象,那么这将起作用。
- 托马斯拉特。是的,但它将保留引用以及数组上定义的任何其他附加属性和函数。
- 是的,这仍然是最好的解决方案。老实说,它仍然可以在类似数组的对象上工作,只是不能立即从内存中释放任何现有的成员。所以只有一个小问题。
- @托马斯鲁特-一个"arraylike"对象,不是一个数组,首先是-so…(?!!)
- 可以像数组一样使用但不是数组的对象在JavaScript中相当常见。如果您希望数组处理代码与"真实"数组以及可以充当数组的对象一起工作,那么您必须确保它能够处理后者。
抽签=[];
它在堆栈溢出问题中得到了回答:如何在javascript中清空数组?.
答案中的两个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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 |
这是Axel Rauschmayer博士关于这两种方法的一篇好文章。
- 在引用链接中选择的答案不是正确的解决方案,因为它不清除引用要清除的数组的变量。该线程中的正确答案是stackoverflow.com/a/8134354/206687
- 虽然这个链接可以回答问题,但最好在这里包含答案的基本部分并提供链接以供参考。如果链接页发生更改,则仅链接答案可能无效。
- @AndrewCounts完成。谢谢你的推动。
一种优化的方法是:
请参阅http://jspef.com/kbk-clear-array/2。
- 如果阵列有空插槽,则此操作失败。应该这样做:while (arr.length > 0) { arr.pop(); }。
- 不,应该是:`while(arr.length)arr.pop();`
您可以交替使用原型库,然后使用原型的clear()方法。
- 可能是另一种方法,但我认为在不使用库清除数组的情况下有很多更简单的方法。
- 是的——那是可行的,但它是用大锤杀死一只苍蝇。