delete
Operatö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#splice
veya 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
delete
JavaScript 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 delete
taşı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.
for
Dizindeki undefined
değer için geleneksel bir döngü döndürülür .
Kullanarak herhangi bir yöntem dizindeki değer için Symbol.iterator
döner undefined
.
forEach
, map
Ve reduce
sadece eksik endeksi atlayacak.
Bu nedenle, delete
operatö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#splice
diziyi değiştirir ve kaldırılan tüm dizinleri döndürür. deleteCount
elemanları dizinden kaldırılır start
ve item1, item2... itemN
dizinden diziye yerleştirilir start
. Eğer deleteCount
gö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#slice
tahribatsız ve, gösterilen endeksleri içeren yeni bir dizi döner start
için end
. Eğer end
is dizinin sonuna belirtilmemiş, varsayılan bıraktı. Eğer end
olumlu, sıfır tabanlı belirten dahil olmayan durmak endeksi. Eğer end
negatif, 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#pop
bir dizideki son öğeyi kaldırır ve o öğeyi döndürür. Bu işlem dizinin uzunluğunu değiştirir.