ComparaisonComparaisons

slice() vs splice()

slice() copie un fragment du tableau sans modifier l’original, tandis que splice() supprime, insère ou remplace des éléments en place, en mutant le tableau.

Sur cette page

Comparaison point par point

#

Exemple

#
JavaScript
const modules = ['Introduction', 'HTML', 'CSS', 'Grid']

const copy = modules.slice(1, 3)
const removed = modules.splice(1, 1)

console.log(copy)
console.log(removed)
console.log(modules)
Console
['HTML', 'CSS']
['HTML']
['Introduction', 'CSS', 'Grid']

Définition et utilisation

#

Les noms se ressemblent étrangement, mais les méthodes font des choses différentes. slice(start, end) découpe un fragment du tableau et le renvoie comme un nouveau tableau, sans toucher à l’original. splice(start, deleteCount, ...items) modifie le tableau d’origine : elle supprime le nombre indiqué d’éléments à partir de start et peut en insérer de nouveaux à leur place.

slice() renvoie toujours le fragment découpé, et splice() renvoie les éléments qu’elle a supprimés (ce peut être un tableau vide quand rien n’a été supprimé). Les indices négatifs se comptent depuis la fin du tableau dans les deux méthodes. Seule splice() accepte des arguments supplémentaires avec les éléments à insérer.

Le choix dépend de si vous voulez conserver l’original. Pour copier, paginer ou découper, utilisez slice(). Pour supprimer ou insérer un élément à un endroit précis, utilisez splice(), et si vous ne voulez pas muter le tableau, utilisez son équivalent plus récent toSpliced().

Syntaxe

#
Syntaxe
array.slice(start, end)
array.splice(start, deleteCount, item1, item2, …)

Plus d’exemples

#
splice() pour insérer, slice() pour voir la fin
JavaScript
const list = ['HTML', 'CSS', 'JavaScript']

list.splice(1, 0, 'Sass')
console.log(list)
console.log(list.slice(-2))
Console
['HTML', 'Sass', 'CSS', 'JavaScript']
['CSS', 'JavaScript']
slice() ne mute pas, même dans les cas extrêmes
JavaScript
const original = ['Léa', 'Lucas']

const sliced = original.slice()
const splicedResult = original.splice(5, 2)

console.log(sliced)
console.log(splicedResult)
console.log(original)
console.log(sliced === original)
Console
['Léa', 'Lucas']
[]
['Léa', 'Lucas']
false

splice() en dehors des limites du tableau ne supprime rien et renvoie un tableau vide. slice() sans arguments crée une copie superficielle, mais c’est un objet différent de l’original.

Bonnes pratiques

#
  • slice() ne mute jamais, elle est donc sûre pour les copies et la pagination, même dans des fonctions qui ne devraient pas modifier les données d’entrée.
  • En supprimant des éléments avec splice() dans une boucle, partez de la fin du tableau. En partant du début, les indices suivants se décalent et il est facile d’en manquer un.
  • Quand vous avez besoin de l’effet de splice(), mais sans muter l’original, utilisez toSpliced().

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.