Christian Heilmann

The many ways to select the n-th character from a string.

Friday, June 2nd, 2023 at 10:20 am

Many ways to do the same thing in JavaScript

A question I came across the other day during a JavaScript application test was this:

How would you select the n-th character from the word “Example”?

The fun thing here is that there are lots of different ways to do that. The one I always forget about is that you can access the index of a string directly. This works in JavaScript and PHP!

'example'.substr(1,1) // (from, how many characters)
'example'.substring(1,2) // (from, to)
'example'.at(1)
'example'.split('')[1] // split turns it into an array
[... 'example'][1] // convert to array via spread
'example'[1] // 🤯

Now, when checking that a string is a certain length, you normally use the length property, but you could also simply check if the index exists, to make it shorter.

let str = 'example';
let amount = 4;
if (str.length > amount) {
    console.log('string is long enough');
}
if (str[amount + 1]) {
    console.log('string is long enough');
}

The question is if this performs better or not. Also, the length bit might make it more readable.

Other problems are that zero-indexing can be confusing (hence the `amount+1`) and that when you use the index you don’t get a boolean returned but instead the character or `undefined`. So if you wanted to write this as a function you need to write something akin to:

const isXlong = (str, y) => str[y + 1] ? true : false;

Which makes it less readable again.

Share on Mastodon (needs instance)

Share on Twitter

Newsletter

Check out the Dev Digest Newsletter I write every week for WeAreDevelopers. Latest issues:

160: Graphs and RAGs explained and VS Code extension hacks Graphs and RAG explained, how AI is reshaping UI and work, how to efficiently use Cursor, VS Code extensions security issues.
159: AI pipelines, 10x faster TypeScript, How to interview How to use LLMs to help you write code and how much electricity does that use? Is your API secure? 10x faster TypeScript thanks to Go!
158: 🕹️ Super Mario AI 🔑 API keys in LLMs 🤙🏾 Vibe Coding Why is AI playing Super Mario? How is hallucinating the least of our worries and what are rules for developing Safety Critical Code?
157: CUDA in Python, Gemini Code Assist and back-dooring LLMs We met with a CUDA expert from NVIDIA about the future of hardware, we look at how AI fails and how to play pong on 140 browser tabs.
156: Enterprise dead, all about Bluesky and React moves on! Learn about Bluesky as a platform, how to build a React App and how to speed up SQL. And play an impossible game in the browser.

My other work: