Adrian

Posted on

# About this series

This is series of daily JavaScript coding challenges... for both beginners and advanced users.

Each day I’m gone present you a very simple coding challenge, together with the solution. The solution is intentionally written in a didactic way using classic JavaScript syntax in order to be accessible to coders of all levels.

Solutions are designed with increase level of complexity.

## Today’s coding challenge

``````Find the frequency of characters inside a string. Return the result as an array of objects. Each object has 2 fields: character and number of occurrences.

``````

(scroll down for solution)

## Code newbies

If you are a code newbie, try to work on the solution on your own. After you finish it, or if you need help, please consult the provided solution.

## Advanced developers

Please provide alternative solutions in the comments below.

You can solve it using functional concepts or solve it using a different algorithm... or just solve it using the latest ES innovations.

By providing a new solution you can show code newbies different ways to solve the same problem.

## Solution

``````// Solution for challenge51

var ar = getCharFrequency("Find the frequency of characters inside a string");
println(JSON.stringify(ar));

function getCharFrequency(text)
{
var ar = [];

for(var chr of text)
{
updateFrequency(ar, chr);
}

return ar;
}

function updateFrequency(ar, chr)
{
for(var el of ar)
{
if (el.chr === chr)
{
el.count++;
}
}

ar.push({ chr : chr, count : 1 });
}

``````

To quickly verify this solution, copy the code above in this coding editor and press "Run".

Note: The solution was originally designed for codeguppy.com environment, and therefore is making use of `println`. This is the almost equivalent of `console.log` in other environments. Please feel free to use your preferred coding playground / environment when implementing your solution.

## Top comments (1)

Mike Talbot ⭐
``````   const count = str=>Object.entries(str.split('').reduce((c,a)=>(c[a] = (c[a] || 0) + 1, c), {})).map(([chr,count])=>({chr,count}))
``````