有没有方法清空数组,如果有可能,可以使用.remove()?
例如,
A = [1,2,3,4];
我怎么才能把它清空?
有没有方法清空数组,如果有可能,可以使用.remove()?
例如,
A = [1,2,3,4];
我怎么才能把它清空?
当前回答
A.拼接(0);
我只是在我正在研究的一些代码上做了这个。它清除了数组。
其他回答
性能测试:
http://jsperf.com/array-clear-methods/3
a = []; // 37% slower
a.length = 0; // 89% slower
a.splice(0, a.length) // 97% slower
while (a.length > 0) {
a.pop();
} // Fastest
使用拼接方法清空数组A的内容是一种更易于跨浏览器且更优化的解决方案,如下所示:
A.拼接(0,A.长度);
如果您使用常量,则您别无选择:
const numbers = [1, 2, 3]
您不能重新设计:
numbers = []
您只能截断:
numbers.length = 0
如果您对内存分配感兴趣,可以使用jsfiddle这样的东西与chrome开发工具的时间线选项卡来比较每种方法。您将希望在“清除”阵列后使用底部的垃圾箱图标强制垃圾收集。这将为您选择的浏览器提供更明确的答案。这里的很多答案都是旧的,我不会依赖它们,而是像上面@tanguy_k的答案那样进行测试。
(有关上述选项卡的介绍,您可以在此处查看)
Stackoverflow迫使我复制jsfiddle,所以这里是:
<html>
<script>
var size = 1000*100
window.onload = function() {
document.getElementById("quantifier").value = size
}
function scaffold()
{
console.log("processing Scaffold...");
a = new Array
}
function start()
{
size = document.getElementById("quantifier").value
console.log("Starting... quantifier is " + size);
console.log("starting test")
for (i=0; i<size; i++){
a[i]="something"
}
console.log("done...")
}
function tearDown()
{
console.log("processing teardown");
a.length=0
}
</script>
<body>
<span style="color:green;">Quantifier:</span>
<input id="quantifier" style="color:green;" type="text"></input>
<button onclick="scaffold()">Scaffold</button>
<button onclick="start()">Start</button>
<button onclick="tearDown()">Clean</button>
<br/>
</body>
</html>
您应该注意,这可能取决于数组元素的类型,因为javascript管理字符串的方式不同于其他基本类型,更不用说对象数组了。类型可能会影响发生的情况。
如果您需要保留原始数组,因为您对它的其他引用也应该更新,则可以通过将其长度设置为零来清除它而不创建新数组:
A.length = 0;