Leaderboard
Javascript Jun 26, 2026
Javascript Title Case Split Map Join Chain

JavaScript String Manipulation — What does this output?

This is a daily Javascript challenge from the CodeShot archive. Practice your knowledge of Title Case Split Map Join Chain and improve your technical interview readiness.

const str = "hello world"
console.log(str.split(" ").map(w => w[0].toUpperCase() + w.slice(1)).join(" "))
A "Hello World"
B "HELLO WORLD"
C "hello world"
D TypeError

Detailed Explanation

Why This Question Matters

If you've spent any time in a technical interview or a coding challenge, you've probably seen "one-liners" like this. On the surface, it looks like a simple string manipulation task. In reality, it's a test of how well you understand method chaining and the way JavaScript handles strings and arrays.

Many developers stumble here because they try to read the line as a single unit instead of a sequence of operations. If you're new to functional programming patterns in JS, the combination of .split(), .map(), and .join() can look like a blur. Understanding this pattern is crucial because it's the bread and butter of data transformation in modern frameworks like React or Vue.

Understanding the Code

Let's look at the snippet again:

const str = "hello world"
console.log(str.split(" ").map(w => w[0].toUpperCase() + w.slice(1)).join(" "))

This is a classic chain. The output of one method becomes the input for the next. Here is exactly what's happening under the hood:

1. The Split (str.split(" "))
The .split() method takes a string and chops it into an array based on the separator you provide. Since we used a space " ", JavaScript looks for every space and creates a break there.

  • Input: "hello world"

  • Output: ["hello", "world"]
  • 2. The Map (.map(...))
    Now we have an array. .map() is used to transform every element in that array. For each word (w), we are doing two things:

  • w[0].toUpperCase(): Grab the first character (index 0) and make it uppercase.

  • w.slice(1): Grab everything from index 1 until the end of the string.

  • Then we concatenate them with a +.
  • So, "hello" becomes "H" + "ello", and "world" becomes "W" + "orld".

  • Output: ["Hello", "World"]
  • 3. The Join (.join(" "))
    Finally, we have an array of capitalized words, but we need a string back. .join(" ") takes all the elements in the array and glues them back together using a space as the connector.

  • Output: "Hello World"
  • Finding the Correct Answer

    The correct answer is Option B: "Hello World".

    Why not the others?

  • If the answer were "HELLO WORLD", the code would have used .toUpperCase() on the entire string, not just the first character.

  • If the answer were "hello world", the .map() function would have been skipped or returned the words unchanged.

  • If the answer were ["Hello", "World"], the .join(" ") call would have been missing.
  • The logic is linear: String $\rightarrow$ Array $\rightarrow$ Transformed Array $\rightarrow$ String.

    Common Mistakes Developers Make

    Even experienced devs can trip up on a few edge cases with this specific approach.

    First, there's the Empty String problem. If str was an empty string "", str.split(" ") would return [""]. When the map tries to access w[0], it gets undefined. Calling .toUpperCase() on undefined will throw a TypeError and crash your app. In a real production environment, you'd need a guard clause or optional chaining.

    Second, Multiple Spaces. If the input was "hello world" (two spaces), .split(" ") would produce an empty string in the middle of the array: ["hello", "", "world"]. Again, trying to access index 0 of an empty string leads to a crash.

    Lastly, some developers forget that strings in JavaScript are immutable. You can't just do str[0] = 'H'. You have to create a new string, which is exactly why we use .slice() and concatenation here.

    Real-World Usage

    You won't often write this exact line in a massive enterprise codebase, but you'll use the *pattern* daily.

    This is essentially how "Title Case" formatting works. Imagine you're building a user profile page and the user entered their name in all lowercase. You can't trust user input, so you run a transformation like this before rendering the name in the UI to make it look professional.

    It's also the foundation for data cleaning. Whenever you get a messy CSV or a raw API response and need to "clean" the strings before saving them to a database, you'll be using this exact split -> map -> join pipeline.

    Key Takeaways

  • Chain with purpose: Each method in a chain should do one thing. Split for structure, map for transformation, join for formatting.
  • Mind the indices: w[0] is a quick way to get the first character, but it's risky if the string might be empty.
  • Slicing is your friend: .slice(1) is the cleanest way to get "the rest of the string" without worrying about the exact length.
  • Immutability matters: Remember that string methods return *new* strings; they don't change the original variable.
  • Why this matters

    Understanding Title Case Split Map Join Chain is crucial for passing technical interviews. In real-world applications, this concept often leads to subtle bugs if not handled correctly. For more details, you can always refer to the official MDN Documentation.

    📝
    Reviewed by CodeShot Editorial
    Every challenge is code-reviewed by senior developers to ensure accuracy and real-world relevance. Learn more.

    Ready for your shot?

    Join thousands of developers solving one logic puzzle every morning.

    Solve Today's Challenge →