2015-08-28 106 views
2

我很困惑刪除運算符使用數組元素。Javascript刪除運算符數組元素列表元素

我發現刪除可以與數組元素一起使用,它刪除元素但不更新數組長度,所以基本上這個元素被替換爲undefined.But當我測試它時,我發現它用空白替換它。

var test = new Array() 
delete test[id]; 

所以我對這次

  1. test[id] ID 3分,這是元素或元素的索引,當我讀到這個ID既可以是。但是當我測試它時,我發現它只在我通過索引時才工作。

  2. 如果數組沒有元素,我試圖通過傳遞任何值,如delete test[3]來刪除?

  3. 當我刪除一個元素,然後用undefined或空白替換那個?
+0

delete運算符從一個**對象刪除一個屬性**。 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete – ArBro

+0

爲什麼你不試試? – 2015-08-28 07:36:08

+0

@torazaburo是的,我終於試了一下,我更新的問題 – Anita

回答

4

不要陣列使用delete,使用splice()

  1. delete不會從數組實際上刪除元素。它只會將該值設置爲undefined
  2. delete不會改變陣列

delete演示

var arr = [1, 2, 3, 4, 5]; 
 

 
delete arr[2]; 
 

 
document.write(arr); 
 
console.log(arr); 
 
document.write('<br />Length: ' + arr.length);

length使用splice()

splice()方法通過刪除現有元素和/或添加新元素來更改數組的內容。

splice()將靜靜地返回,如果您傳遞了一個出界限索引來刪除。

arr.splice(indexToDelete, 1); 

splice()演示

var arr = [1, 2, 3, 4, 5]; 
 

 
arr.splice(2, 1); 
 
arr.splice(100, 1); // For out of bounds index, it fails silently 
 

 
document.write(arr); 
 
console.log(arr); 
 
document.write('<br />Length: ' + arr.length);