在JS中如何清空一个数组?
问题来源于stackoverflow:How do I empty an array in JavaScript?。更多关于JS中数组的相关操作参见:JS中数组方法总结 比如我有如下数组:A = [1, 2, 3, 4]
; 我如何清空它?
A = [];
这个答案应该很好想到,因为很符合“从问题本身出发”的逻辑,既然我们想清空数组 A,那就清空喽~ 但是这个方法有一个弊端:如果你之前通过引用的方式 copy 了数组A,那么即使通过 A = []
将数组 A 清空了,你的引用变量也还是 A 原来的值,理论知识总是难理解,举个栗子:
1 | var arr1 = ['a', 'b', 'c', 'd', 'e', 'f']; |
A.length = 0
因为在 JS 中数组其实也是一个对象(所谓的“数组对象”),而每个数组都有一个 length 属性,这是一个可读写的属性,将其置为 0 之后就可以清空数组。同时它的引用变量也将被清空:
1 | var arr1 = ['a','b','c','d','e','f']; |
A.splice(0, A.length)
和上面的通过 length 清空类似,该方法也将同时清空数组 arr2。不同点在于,.splice() 方法将返回一个数组
while 和 .pop()
这是一个比较“愚蠢”的方法:
1 | while(A.length > 0) { |
该方法同样会清空数组 arr2,但是也是效率最低的一种方法
while和.shift()
一般“愚蠢”的方法不止一种。。:
1 | while(A.length > 0) { |
性能比较
可以点击这里查看这四种方法的性能测试结果,或者直接看下图:
从图中可以很明显的看出来,A.length = 0;
这种方法是效率最高的,效率最低的是 pop 和 shift(不出所料啊。。)
赏
支付宝打赏 微信打赏
听说赞过就能年薪百万