J'explique

Le bout de code d’hier :

splitMetaValues(str) {
  let list = new Set(str.split(',').map(s => s.trim()).filter(i => i));
  return [...list].sort((a, b) => a.localeCompare(b));
}

Cette fonction récupère la liste des mots-clés tapés dans le champ idoine, ceux-ci étant séparés par des virgules, et renvoie un tableau trié avec chacun des mots-clés.

Précision, un mot-clé ne doit pas être dupliqué dans le tableau renvoyé et les mots-clés ne doivent pas comporter d’espaces (ou caractères équivalents) au début ou à la fin.

splitMetaValues(str) {
  …
}

str est la chaîne de caractères qui contient la liste.

splitMetaValues(str) {
  let list = new Set(...);
  ...
}

J’utilise un objet Set qui fonctionne peu ou prou comme un tableau, sauf qu’il rejette automagiquement les doublons.

Pour construire cet objet, je fournis en paramètre la liste des mots-clés sous forme de tableau.

splitMetaValues(str) {
  let list = new Set(str.split(',')...);
  ...
}
splitMetaValues(str) {
  let list = new Set(str.split(',').map(s => s.trim())...);
  ...
}
splitMetaValues(str) {
  let list = new Set(str.split(',').map(s => s.trim()).filter(i => i));
  ...
}

Ce tableau est créé avec str.split(',') qui sépare la chaîne en autant d’éléments séparés par des virgules, auquel j’applique ensuite une méthode map(…) qui va supprimer les espaces (et équivalents) au début et à la fin de chacun des éléments du tableau et auquel j’applique ensuite un filtre filter(…) qui a pour objet de supprimer les éléments vides.

splitMetaValues(str) {
  ...
  return [...list].sort((a, b) => a.localeCompare(b));
}

Ensuite comme il faut retourner un tableau, je le construis en déstructurant [...list] la liste et j’applique ensuite une méthode de tri sort(…) en m’appuyant sur la fonction de comparaison de caractères dépendant du réglage de langue du navigateur.

Et voilà :

splitMetaValues(str) {
  let list = new Set(str.split(',').map(s => s.trim()).filter(i => i));
  return [...list].sort((a, b) => a.localeCompare(b));
}

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15007

Haut de page