Édité en octobre 2016
- Faites-le simple, intuitif et explicite ( rasoir d'Occam )
- Faites-le immuable (le tableau d'origine reste inchangé)
- Faites-le avec les fonctions JavaScript standard, si votre navigateur ne les prend pas en charge - utilisez polyfill
Dans cet exemple de code, j'utilise la fonction "array.filter (...)" pour supprimer les éléments indésirables d'un tableau. Cette fonction ne modifie pas le tableau d'origine et en crée un nouveau. Si votre navigateur ne prend pas en charge cette fonction (par exemple, Internet Explorer avant la version 9 ou Firefox avant la version 1.5), pensez à utiliser le filtre polyfill de Mozilla .
Suppression d'un élément (code ECMA-262 Edition 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 ]
Suppression d'un élément (code 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 ]
IMPORTANT La syntaxe de la fonction de flèche ECMAScript 6 "() => {}" n'est pas du tout prise en charge dans Internet Explorer, Chrome avant la version 45, Firefox avant la version 22 et Safari avant la version 10. Pour utiliser la syntaxe ECMAScript 6 dans les anciens navigateurs, vous pouvez utiliser BabelJS .
Suppression de plusieurs éléments (code ECMAScript 7)
Un avantage supplémentaire de cette méthode est que vous pouvez supprimer plusieurs éléments
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 ]
La fonction "array.includes (...)" n'est pas du tout prise en charge dans Internet Explorer, Chrome avant la version 47, Firefox avant la version 43, Safari avant la version 9 et Edge avant la version 14 donc voici polyfill de Mozilla .
Suppression de plusieurs éléments (à l'avenir, peut-être)
Si la proposition "This-Binding Syntax" est acceptée, vous pourrez le faire:
// 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 ]
Essayez-le vous-même dans BabelJS :)
Référence