78 votes

Retourner un tableau sans élément supprimé ? Utiliser splice() sans changer le tableau ?

Je veux faire quelque chose comme :

 var myArray = ["one","two","three"];
document.write(myArray.splice(1,1));
document.write(myArray);

Pour qu'il affiche d'abord "un, trois", puis "un, deux, trois". Je sais que splice() renvoie l'élément supprimé et modifie le tableau, mais existe-t-il une fonction pour renvoyer un nouveau tableau avec l'élément supprimé ? J'ai essayé:

 window.mysplice = function(arr,index,howmany){
    arr.splice(index,howmany);
    return arr;   
};

Si j'essaye :

 var myArray = ["one","two","three"];
document.write(mySplice(myArray,1,1));
document.write(myArray);

Cela change toujours myArray.

59voto

Neverever Points 3583

comme suggéré par la réponse ci-dessous, voici un instantané de code

 var myArray = ["one", "two", "three"];
var cloneArray = myArray.slice();

myArray.splice(1, 1);

console.log(myArray);
console.log(cloneArray);

29voto

Thai-Duong Nguyen Points 211

Utilisez ceci:

 function spliceNoMutate(myArray,indexToRemove) {
    return myArray.slice(0,indexToRemove).concat(myArray.slice(indexToRemove+1));
}

6voto

arthurDent Points 308

Vous pouvez utiliser la fonction de propagation ES6 :

 let myArray = ['one','two','three'];
let mySplicedArray = [...myArray];
mySplicedArray.splice(1,1); 

console.log(myArray); /// ['one', 'two', 'three']
console.log(mySplicedArray); /// ['one', 'three']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X