-3
votes

Fonction qui capitalise la première lettre de chaque mot dans une phrase

J'ai fait une fonction qui fait une matrice d'une chaîne, puis capitalise la première lettre de chaque mot, mais j'essaie ensuite de le faire en une chaîne avec une fonction de jointure () mais cela ne fonctionne pas. Donc, le problème est que la méthode de jointure () ne fonctionne pas, il ne convertira donc pas une matrice en chaîne

function titleCase(string) {
  const arr = string.split(' ')
  return arr.map(item => {
    const newArray = item.charAt(0).toUpperCase() + item.slice(1)
    return newArray.join('-')

  })
}


5 commentaires

Qu'est-ce qui ne fonctionne pas?


S'il vous plaît ne vous attendez pas à ce que nous déboguions votre code. S'il vous plaît dans les questions de code donnez un exemple de reproductible minimal - Coupe et code de coller et d'exécution, y compris l'exemple de l'exemple représentatif code; sortie souhaitée et réelle (y compris les messages d'erreur Verbatim); Tags et versions; Spécification claire et explication. Donnez au moins que vous pouvez donner que le code que vous affiche est OK étendu par le code que vous affichez n'est pas correct. (Débogage fondamental.) Trouvez ensuite le premier point de l'exécution où l'état des variables n'est pas ce qu'il est censé être et dire pourquoi. (Débogage Fundamantal.)


joindre () méthode. Donc je ne peux pas faire une chaîne d'un tableau


Votre appel .join est au mauvais endroit, déplacez-la une ligne ci-dessous et fonctionnera. Devrait être renvoyé arr.map (.. YourCodehere) .join ('')


Voir Comment le commentaire @Replies fonctionne-t-il? pour apprendre à utiliser @x pour notifier Un commentateur non unique non postéral X Re un commentaire. S'il vous plaît clarifier via des modifications, pas des commentaires.


3 Réponses :


0
votes

Essayez quelque chose comme:

p>

function ucFirst(string){
  return string.slice(0, 1).toUpperCase()+string.slice(1);
}
function ucFirstSentence(sentences){
  const all = sentences.match(/.+?(\.|\!|\?)(\s+|$)/g);
  for(let i=0,l=all.length; i<l; i++){
    all[i] = ucFirst(all[i].trim());
  }
  return all.join(' ');
}
let uc = ucFirstSentence("this is just a test. i'm not really sure if it works, a.b. quite yet. i guess we'll see if this suits your needs!");
console.log(uc);


0 commentaires

0
votes

Votre variable de NewArray dans la fonction de rappel n'est en réalité pas une matrice, mais une chaîne de chaque élément du tableau Arry (avec sa première lettre capitalisée). Vous appelez la méthode de jointure sur une chaîne. Vous devriez réellement attribuer la méthode arr.map à une nouvelle variable et appeler la méthode de jointure en dehors de la méthode Arr.MAP sur ce tableau.

function titleCase(string) {
  const arr = string.split(' ');
  const newArray = arr.map(item => {
    const eachWord = item.charAt(0).toUpperCase() + item.slice(1);
    return eachWord;
  });
  return newArray.join(" ");
}


0 commentaires

0
votes

imo, donnant des noms propres variable aide. Vous êtes proche d'une solution xxx


0 commentaires