方式1:splice函數
arrayObject.splice(index,howmany,element1,.....,elementX)
index:必選,規定從何處添加/刪除元素。
howmany:必選,規定應該刪除多少元素。未規定此參數,則刪除從 index 開始到原數組結尾的所有元素。
element1:可選,規定要添加到數組的新元素。
<script type ="text/javascript">
var arr = [1,2,3,4]; arr.splice(0,arr.length);
</script>
方式2:給數組的length賦值為0
<script type ="text/javascript">
var arr = [1,2,3,4]; arr.length = 0; </script>
賦予數組的長度小於本身的長度,數組中后面的元素將被截斷。
賦予數組的長度大於本身的長度,將擴展數組長度,多的元素為undefined。
方式3:直接賦予新數組 []
<script type ="text/javascript">
var arr = [1,2,3,4]; arr = []; </script>
這種方式為將arr重新復制為空數組,之前的數組如果沒有被引用,將等待垃圾回收。
效率比較:
效率測試代碼如下:
<script>
var a = []; var b = []; var c = []; for(var i =0 ; i < 100000000;i++){ a.push(i); } console.time('splice'); a.splice(0,a.length); console.timeEnd('splice'); for(var i =0 ; i < 100000000;i++){ b.push(i); } console.time('length'); b.length = 0; console.timeEnd('length'); for(var i =0 ; i < 100000000;i++){ c.push(i); } console.time('賦值[]'); c = []; console.timeEnd('賦值[]'); </script>
測試結果:
splice: 0.010986328125ms
length: 0.009033203125ms
賦值[]: 0.024169921875ms
多次測試發現第二種方式最快,第一種其次,大數據量下 第三種最慢。
測試結果可能不嚴謹。大家僅做參考。