Modificato il 2016 ottobre
- Fallo semplice, intuitivo ed esplicito (il rasoio di Occam )
- Fallo immutabile (l'array originale rimane invariato)
- Fallo con le funzioni JavaScript standard, se il tuo browser non le supporta - usa polyfill
In questo esempio di codice uso la funzione "array.filter (...)" per rimuovere elementi indesiderati da un array. Questa funzione non modifica l'array originale e ne crea uno nuovo. Se il tuo browser non supporta questa funzione (ad es. Internet Explorer prima della versione 9 o Firefox prima della versione 1.5), considera l'utilizzo del filtro Polyfill di Mozilla .
Rimozione di un elemento (codice ECMA-262 Edizione 5 aka oldstyle JavaScript)
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 ]
Rimozione elemento (codice 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 ]
IMPORTANTE ECMAScript 6 "() => {}" La sintassi della funzione freccia non è affatto supportata in Internet Explorer, Chrome prima della versione 45, Firefox prima della versione 22 e Safari prima della versione 10. Per usare la sintassi ECMAScript 6 nei vecchi browser puoi usare BabelJS .
Rimozione di più elementi (codice ECMAScript 7)
Un ulteriore vantaggio di questo metodo è che è possibile rimuovere più elementi
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 ]
IMPORTANTE La funzione "array.includes (...)" non è affatto supportata in Internet Explorer, Chrome prima della versione 47, Firefox prima della versione 43, Safari prima della versione 9 e Edge prima della versione 14, quindi ecco il polyfill di Mozilla .
Rimozione di più elementi (in futuro, forse)
Se la proposta "Sintassi vincolante" viene mai accettata, sarai in grado di farlo:
// 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 ]
Provalo tu stesso in BabelJS :)
Riferimento