The deleteoperator yang digunakan untuk menghapus sifat dari benda-benda.
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
Perhatikan bahwa, untuk array, ini tidak sama dengan menghapus elemen . Untuk menghapus elemen dari array, gunakan Array#spliceatau Array#pop. Sebagai contoh:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
Detail
deletedalam JavaScript memiliki fungsi yang berbeda dengan kata kunci dalam C dan C ++: tidak secara langsung membebaskan memori. Sebaliknya, tujuan utamanya adalah untuk menghapus properti dari objek.
Untuk array, menghapus properti yang berkaitan dengan indeks, membuat array jarang (mis. Array dengan "lubang" di dalamnya). Sebagian besar browser menyatakan indeks array yang hilang ini sebagai "kosong".
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Perhatikan bahwa deletetidak pindah array[3]ke array[2].
Fungsi bawaan yang berbeda di JavaScript menangani array jarang.
for...in akan melewatkan indeks kosong sepenuhnya.
forLoop tradisional akan kembali undefineduntuk nilai pada indeks.
Setiap metode yang menggunakan Symbol.iteratorakan mengembalikan undefinednilai pada indeks.
forEach, mapdan reducehanya akan melewatkan indeks yang hilang.
Jadi, deleteoperator tidak boleh digunakan untuk kasus umum menghapus elemen dari array. Array memiliki metode khusus untuk menghapus elemen dan mengalokasikan kembali memori: Array#splice()dan Array#pop.
Array # splice (mulai [, deleteCount [, item1 [, item2 [, ...]]]])
Array#splicebermutasi array, dan mengembalikan indeks yang dihapus. deleteCountelemen dihapus dari indeks start, dan item1, item2... itemNdimasukkan ke dalam array dari indeks start. Jika deleteCountdihilangkan maka elemen dari startIndex dihapus ke akhir array.
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
Ada juga bernama sama, tetapi berbeda, fungsi pada Array.prototype: Array#slice.
Array # slice ([begin [, end]])
Array#slicetidak merusak, dan mengembalikan array baru yang berisi indeks yang ditunjukkan dari startke end. Jika enddibiarkan tidak ditentukan, defaultnya ke akhir array. Jika endpositif, ini menentukan indeks non-inklusif berbasis nol untuk berhenti. Jika endnegatif, itu menentukan indeks untuk berhenti dengan menghitung kembali dari akhir array (mis. -1 akan menghilangkan indeks akhir). Jika end <= start, hasilnya adalah array kosong.
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]
Array # pop
Array#popmenghapus elemen terakhir dari array, dan mengembalikan elemen itu. Operasi ini mengubah panjang array.