Let's Code

Posted on • Updated on

# JS Coding Question #8: Capitalize All Words In A Sentence [Not So Easy]ππ£

#### Interview Question #8:

Write a function that will capitalize all words in a sentence.π€

If you need practice, try to solve this on your own. I have included 3οΈβ£ potential solutions below.

Note: There are many other potential solutions to this problem.

Feel free to bookmark π even if you don't need this for now. You may need to refresh/review down the road when it is time for you to look for a new role.

Codepen: If you want to play around and experiment with the code: https://codepen.io/angelo_jin/pen/xxrdBVE

#### Solution #1: Array Map (Recommended)

• This is one solution I would go by if I am going to be asked in an interview. It pretty straight-forward approach and is legible. π₯
``````function capitalize(str) {
return str
.split(' ')
.map(word => word[0].toUpperCase() + word.slice(1)).join(' ');
}
``````

#### Solution #2: Array Reduce (Recommended)

• Another solution that I like. Array reduce is used as intended where one value is returned as a result of every iteration. Pretty sexy π approach just like array map above.
``````function capitalize(str) {
return str
.split(' ')
.reduce((prev, current) => `\${prev} \${current[0].toUpperCase() + current.slice(1)}`, '')
}
``````

#### Solution #3: for-of loop

• Below is an alternative solution that can be used but it creates a variable to push results which array reduce solves easily. I see this as an OK option.
``````function capitalize(str) {
const words = [];

for (let word of str.split(' ')) {
words.push(word[0].toUpperCase() + word.slice(1));
}

return words.join(' ');
}
``````

Happy coding and good luck if you are interviewing!

If you want to support me - Buy Me A Coffee

In case you like a video instead of bunch of code ππ

Sage Baggott

Love these JS coding questions!

A note on solution #2: instead of putting the whitespace between the prev and current props in the template string (Note: β¬οΈ = whitespace so it's easier to see):

`\${prev}β¬οΈ\${current[0].toUpperCase() + current.slice(1)}`, '')

...you should put the whitespace at the end of the template string:

`\${prev}\${current[0].toUpperCase() + current.slice(1)}β¬οΈ`, '')

...that way you won't get an empty space before the first word.

Let's Code

lukaszlukasiewicz

str.replace(/(^|\s)(.)/g,match => match.toUpperCase())

Let's Code

that works beautifully! Thanks for the snippet.

## Take a look at this:

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. π