Diedit pada 2016 Oktober
- Lakukan dengan sederhana, intuitif, dan eksplisit ( pisau cukur Occam )
- Lakukan itu tidak berubah (array asli tetap tidak berubah)
- Lakukan dengan fungsi JavaScript standar, jika browser Anda tidak mendukungnya - gunakan polyfill
Dalam contoh kode ini saya menggunakan fungsi "array.filter (...)" untuk menghapus item yang tidak diinginkan dari array. Fungsi ini tidak mengubah array asli dan membuat yang baru. Jika browser Anda tidak mendukung fungsi ini (mis. Internet Explorer sebelum versi 9, atau Firefox sebelum versi 1.5), pertimbangkan untuk menggunakan filter polyfill dari Mozilla .
Menghapus item (ECMA-262 Edition 5 kode alias JavaScript gaya lama)
var value = 3
var arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(function(item) {
return item !== value
})
console.log(arr)
// [ 1, 2, 4, 5 ]
Menghapus item (kode ECMAScript 6)
let value = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => item !== value)
console.log(arr)
// [ 1, 2, 4, 5 ]
PENTINGECMAScript 6 "() => {}" sintaks fungsi panah sama sekali tidak didukung di Internet Explorer, Chrome sebelum versi 45, Firefox sebelum versi 22, dan Safari sebelum versi 10. Untuk menggunakan sintaks ECMAScript 6 di browser lama, Anda dapat menggunakan BabelJS .
Menghapus banyak item (kode ECMAScript 7)
Keuntungan tambahan dari metode ini adalah Anda dapat menghapus banyak item
let forDeletion = [2, 3, 5]
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => !forDeletion.includes(item))
// !!! Read below about array.includes(...) support !!!
console.log(arr)
// [ 1, 4 ]
PENTING "array.includes (...)" fungsi sama sekali tidak didukung di Internet Explorer, Chrome sebelum versi 47, Firefox sebelum versi 43, Safari versi sebelum 9, dan versi Edge sebelum 14 jadi di sini adalah polyfill dari Mozilla .
Menghapus banyak item (di masa depan, mungkin)
Jika proposal "This-Binding Syntax" pernah diterima, Anda akan dapat melakukan ini:
// array-lib.js
export function remove(...forDeletion) {
return this.filter(item => !forDeletion.includes(item))
}
// main.js
import { remove } from './array-lib.js'
let arr = [1, 2, 3, 4, 5, 3]
// :: This-Binding Syntax Proposal
// using "remove" function as "virtual method"
// without extending Array.prototype
arr = arr::remove(2, 3, 5)
console.log(arr)
// [ 1, 4 ]
Coba sendiri di BabelJS :)
Referensi