J'ai essayé de supprimer les mots en double d'une chaîne, et cela ne fonctionne pas.
J'ai la chaîne actuelle:
uniqueList = 'chinese restaurant chinese food restaurant'
et je veux ce résultat :
const x = categories.replace(/,/g, '');
const uniqueList = x
.split()
.filter((currentItem, i, allItems) => {
return i === allItems.indexOf(currentItem);
})
.join();
J'ai essayé ce qui suit:
const x = 'mexican restaurant food'
Ce qui me donne:
const categories = 'mexican, restaurant, mexican, food, restaurant'
Quel est le problème avec le code ci-dessus?
3 Réponses :
Dans la méthode String.prototype.split (separator) , qui est utilisée par vous, si le séparateur est manqué, le tableau retournera avec un élément - la chaîne source. Donc dans votre code devrait être .split ('') au lieu de .split () .
Mais mieux vaut utiliser .split (',') sans const x = categories.replace (/, / g, ''); . Et même vous pouvez .split (/ \ s *, \ s * /) , de cette façon vous n'avez pas à vous soucier des espaces.
Rejoindre par défaut, utilisez ',' comme séparateur. Vous devriez donc écrire .join ('') .
J'aime utiliser Set code> à cette fin. Lire dans la documentation:
L'objet Set vous permet de stocker des valeurs uniques de tout type, qu'il s'agisse de valeurs primitives ou de références d'objet.
Cela peut fonctionner pour vous:
const categories = 'mexican, restaurant, mexican, food, restaurant'.split(', ');
const unique = Array.from(new Set(categories));
console.log(unique);
console.log(unique.join(' '));
J'espère que cela vous aidera!
const categories = 'mexican, restaurant, mexican, food, restaurant';
const uniqueList = categories
.split(', ') // split the string when a comma + space is found
.filter((currentItem, i, allItems) => {
return i === allItems.indexOf(currentItem);
}) // filter out duplicates
.join(' '); // rejoin array to string
console.log( uniqueList );
Convertissez la chaîne en tableau et jetez-la dans un
Set. Cela vous donnera automatiquement une liste unique que vous pourrez reconvertir en chaîne.appeler
splitsans argument vous renvoie simplement un tableau singleton contenant la chaîne entière. Vous devez vous diviser sur le caractère d'espace.