J'ai une chaîne avec des valeurs comme celle-ci a,b,c,d et je souhaite supprimer une lettre spécifique par index

Voici donc ce que j'ai fait str.split(',').splice(1,1).toString() et cela ne fonctionne (évidemment) pas puisque splice renvoie les valeurs supprimées et non le tableau d'origine

Existe-t-il un moyen de faire ce qui précède en une seule ligne?

var str = "a,b,c,d";
console.log(str.split(',').splice(1,1).toString());

Merci d'avance.

4
Moses Schwartz 3 juin 2020 à 15:44

4 réponses

Meilleure réponse

Vous pouvez utiliser filter et ajouter condition en tant que index != 1.

var str = "a,b,c,d";
console.log(str.split(',').filter((x, i) => i != 1).toString());
4
Karan 3 juin 2020 à 12:49

L'épissure fonctionne en place, donc oneliner est

const arr = "a,b,c,d".split(','); arr.splice(1,1); console.log(arr.toString());

Si vous voulez une chaîne dans un oneliner, vous devez coder en dur l'index dans un filtre

console.log("a,b,c,d".split(',').filter((item, i) => i != 1).toString())

Ou deux tranches (pas du tout performantes)

const arr = "a,b,c,d".split(',')
console.log([...arr.slice(0,1),...arr.slice(2)].toString())
2
mplungjan 3 juin 2020 à 13:00

Une autre solution étrange. Détruire le tableau, supprimer l'index indésirable, récupérer un objet et joindre les valeurs de celui-ci.

var string = "a,b,c,d",
    { 1: _, ...temp } = string.split(',')

console.log(Object.values(temp).join(','));
4
Nina Scholz 3 juin 2020 à 15:06

La méthode alternative avec regex replace

var str = "a,b,c,d";

console.log(str.replace(/,\w+/, ''))
3
User863 3 juin 2020 à 12:57