DEV Community

Divyajyoti Ukirde
Divyajyoti Ukirde

Posted on • Edited on

4 1

Easy peasy formatting list of names

Given an array containing hashes of names.
You have to return a string formatted as a list of names separated by commas except for the last two names, which should be separated by &.

formatList([ {name: 'Dave'}, {name: 'Alex'}, {name: 'Marge'} ])
// returns 'Dave, Alex & Marge'
Enter fullscreen mode Exit fullscreen mode

Here's a single line solution, regex peeps

let formatList = (names) => names.map(x => x.name).join(', ').replace(/(.*),(.*)$/, "$1 &$2");
Enter fullscreen mode Exit fullscreen mode

But this is the most clever solution, I could never think of:

let formatList = (names) => {
  let a = names.map(obj => obj.name);
  let name = a.pop();
  return a.length ? a.join(", ") + " & " + name : name || "";
}
Enter fullscreen mode Exit fullscreen mode

I could think of using reduce, forEach and other looping methods using if else. reduce does a pretty great job itself.

let formatList = (names) => {
  return names.reduce((prev, curr, i, arr) => {
    return prev + curr.name + (i < arr.length - 2 ? ', ' : i == arr.length - 2 ? ' & ' : '');
  }, '');
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series