deleteOperatör nesnelerinden özelliklerini uzaklaştırmak için kullanılır.
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
Diziler için bunun bir öğeyi kaldırmakla aynı olmadığını unutmayın . Bir diziden öğe kaldırmak için Array#spliceveya tuşunu kullanın Array#pop. Örneğin:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
ayrıntılar
deleteJavaScript C ve C ++ anahtar kelimesinden farklı bir işlevi vardır: doğrudan bellek serbest değildir. Bunun yerine, tek amacı nesneleri nesnelerden kaldırmaktır.
Diziler için, bir dizine karşılık gelen bir özelliği silmek seyrek bir dizi (yani içinde "delik" bulunan bir dizi) oluşturur. Çoğu tarayıcı bu eksik dizi indekslerini "boş" olarak gösterir.
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Not deletetaşınmaya gelmez array[3]içine array[2].
JavaScript'teki farklı yerleşik işlevler, seyrek dizileri farklı şekilde işler.
for...in boş dizini tamamen atlayacaktır.
forDizindeki undefineddeğer için geleneksel bir döngü döndürülür .
Kullanarak herhangi bir yöntem dizindeki değer için Symbol.iteratordöner undefined.
forEach, mapVe reducesadece eksik endeksi atlayacak.
Bu nedenle, deleteoperatör, bir diziden eleman çıkarmanın ortak kullanım durumu için kullanılmamalıdır. Diziler, öğeleri kaldırmak ve belleği yeniden ayırmak için özel bir yöntem kullanır: Array#splice()ve Array#pop.
Dizi # eki (start [, deleteCount [, öğe1 [, öğe2 [, ...]]]])
Array#splicediziyi değiştirir ve kaldırılan tüm dizinleri döndürür. deleteCountelemanları dizinden kaldırılır startve item1, item2... itemNdizinden diziye yerleştirilir start. Eğer deleteCountgöz ardı edilir startIndex'ten gelen elemanlar dizisinin sonuna kaldırılır.
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
Benzer adlı, ancak farklı, fonksiyon üzerinde de vardır Array.prototype: Array#slice.
Dizi # dilim ([başlangıç [, bitiş]])
Array#slicetahribatsız ve, gösterilen endeksleri içeren yeni bir dizi döner startiçin end. Eğer endis dizinin sonuna belirtilmemiş, varsayılan bıraktı. Eğer endolumlu, sıfır tabanlı belirten dahil olmayan durmak endeksi. Eğer endnegatif, bu dizinin sonundaki geri sayım en durağı indisi (örn. -1 Son dizini ihmal edecek). Eğer end <= start, sonuç boş bir dizidir.
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
Dizi # pop
Array#popbir dizideki son öğeyi kaldırır ve o öğeyi döndürür. Bu işlem dizinin uzunluğunu değiştirir.