讀了o'Reilly的JavaScript - the good parts,裡面有提到Array delete的部分,而我在寫JavaScript
時,是乎都沒注意到這些用法,因此在這邊做一個記錄。
一般我們在使用陣列時,如果要delete掉首尾以外的項目,可以使用operator delete,用
法如下:
var testArray = ['a', 'b', 'c', 'd'];
delete testArray[2]; //['a', 'b', 'd']
不過,雖然是delete掉了此項目['c'],但是Array的length卻是不變的,因此如果您再取用
這個array時,若是使用for以length為dimension存取,到時定會發生undefined的error。
但若是使用了splice method來增減項目的話,就可以動態控制array的長度
splice(index, count, item1, item2,....) //index, count為必填欄位
若您用testArray.splice(2, 0, 'e', 'f'); //['a', 'b', 'e', 'f', 'c', 'd']
如count的欄位設定成0,那麼就會達到add的目的;
但testArray.splice(2, 1); //['a', 'b', 'd'] , length = 3
則因為count不為0,因此達到了delete的目的
當然,依照我以前的寫法,我可能會在run迴圈時,當碰到undefined的項目是,
我會利用if (typeof testArray[index] != 'undefined')去做篩選,
但若真正的改變了testArray的結構,也不失為一個更好的作法!
留言
張貼留言