DEV Community

Chinwendu Agbaetuo
Chinwendu Agbaetuo

Posted on

Count the occurrence of a character in a string - Javascript

Solution

function countStringOccurrences(str) {
  let occurrence = {};

  Array.from(str).forEach(char => {
    let currentCount = occurrence[char] || 0;
    occurrence[char] = currentCount + 1;
  });

  console.log(occurrence);
  return occurrence; 
}

countStringOccurrences("hello");
countStringOccurrences("πŸ‘πŸ˜‰πŸ˜‰πŸ‘");
Enter fullscreen mode Exit fullscreen mode

Result

Object { h: 1, e: 1, l: 2, o: 1 };
Object { πŸ‘: 2, πŸ˜‰: 2 }
Enter fullscreen mode Exit fullscreen mode

Top comments (5)

Collapse
Β 
oculus42 profile image
Samuel Rouse β€’

This is a nice, simple algorithm. πŸ‘

I would recommend moving occurrence inside the function, as it is currently shared and accumulating changes across multiple calls. You are already returning occurrence from the function, you just aren't using the output directly.

Also, don't be afraid to use longer, clearer names. countStringOccurrences is just fine. When working with an isolated example like this the difference is negligible, but the mental overhead of remembering what all the abbreviations are supposed to mean adds up as the program grows.

Collapse
Β 
dindustack profile image

Thanks for your feedback, I have corrected it.

Collapse
Β 
jonrandy profile image
Jon Randy πŸŽ–οΈ β€’

Unfortunately this doesn't work very well...

Try your function with this string: πŸ˜‰πŸοΈπŸ‘

countStrOcc('πŸ˜‰πŸοΈπŸ‘')

console.log(occurrence)

{
  "\ud83d": 2,
  "\ude09": 1,
  "\ud83c": 1,
  "\udfdd": 1,
  "️": 1,
  "\udc4d": 1
}
Enter fullscreen mode Exit fullscreen mode
Collapse
Β 
dindustack profile image
Chinwendu Agbaetuo β€’

Thanks for testing it, I will look into it.

Collapse
Β 
dindustack profile image
Chinwendu Agbaetuo β€’

I corrected it, thanks.

Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more