Afficher les trois derniers articles, couper un texte trop long, découper une liste en pages : à chaque fois, il s'agit de prendre un morceau sans abîmer l'ensemble.
slice fait exactement cela, et il fonctionne à l'identique sur un Array (tableau) et sur une String (chaîne de caractères).
Définition
slice(debut, fin) rend une nouvelle valeur composée des éléments situés entre les deux index. L'index de début est inclus, l'index de fin est exclu. La valeur d'origine n'est jamais modifiée.
const semaine = ["lun", "mar", "mer", "jeu", "ven", "sam", "dim"];
console.log(semaine.slice(0, 5)); // [ 'lun', 'mar', 'mer', 'jeu', 'ven' ]
console.log(semaine.slice(5)); // [ 'sam', 'dim' ]
console.log(semaine.length); // 7, rien n'a bougé
const titre = "Believemy";
console.log(titre.slice(0, 6)); // "Believ"Omettre le second argument revient à aller jusqu'au bout. Omettre les deux rend une copie complète, ce qui est l'usage détourné le plus fréquent de la méthode.
Les index négatifs
Un index négatif se compte depuis la fin, ce qui évite d'écrire longueur - 3 partout.
const notes = [12, 15, 9, 18, 11];
console.log(notes.slice(-2)); // [ 18, 11 ], les deux dernières
console.log(notes.slice(1, -1)); // [ 15, 9, 18 ], sans la première ni la dernière
console.log("2026-08-20".slice(-2)); // "20", le jourUn piège discret : slice(-0) équivaut à slice(0) et rend donc tout. Si le nombre d'éléments à prendre vient d'une variable qui peut valoir zéro, testez-la avant, sinon la liste complète s'affiche là où rien ne devait apparaître.
Copier un tableau, et jusqu'où
slice() sans argument produit une copie de surface : un nouveau tableau, mais les mêmes objets à l'intérieur.
const original = [1, 2, 3];
const copie = original.slice();
copie.push(4);
console.log(original.length); // 3, la copie est indépendante
const objets = [{ vu: false }];
const copieObjets = objets.slice();
copieObjets[0].vu = true;
console.log(objets[0].vu); // true, c'est le même objetAjouter ou retirer des éléments dans la copie ne touche pas l'original, mais modifier une propriété d'un objet se voit des deux côtés. C'est la distinction entre Référence et valeur, et elle explique la majorité des états qui changent sans qu'on comprenne pourquoi.
Questions fréquentes
Pourquoi l'index de fin est-il exclu ?
Parce que la soustraction donne alors directement le nombre d'éléments : slice(0, 5) en rend cinq. Cela permet aussi d'enchaîner des tranches sans chevauchement ni trou, slice(0, 10) puis slice(10, 20), ce qui est exactement le calcul d'une pagination.
slice ou Array.splice() ?
Les deux noms se ressemblent, les comportements sont opposés. slice laisse le tableau intact et rend la portion demandée, Array.splice() modifie le tableau et rend ce qui en a été retiré. En cas de doute, retenez que slice est celui qu'on peut appeler sans conséquence.
Comment couper un texte proprement à cent caractères ?
texte.slice(0, 100) coupe au caractère près, souvent au milieu d'un mot. Pour couper au dernier espace, cherchez-le d'abord : const court = texte.slice(0, 100); court.slice(0, court.lastIndexOf(" ")) + "...". Et vérifiez la longueur avant, sinon les textes courts reçoivent des points de suspension injustifiés.