Count occurrences of each character in a string using Javascript
Count occurrences of each character in a string using Javascript
It’s common in programming that every developer needs to count each occurrence of a character in a string or sentence in some situation. In this article, we will study all the possible best ways to understand how to count occurrences of each character in a string using Javascript. For counting the character in the sentence or string we can use the following methods which are very easy and good
- Reduce method: To count each repeated character in the string or sentence. Also,
- Replace method
- Combination of set and map methods
Now let’s understand how the same methods can be implemented with an example
Solution 1:
The simplest way is we can use the reduce method with a ternary condition. Every character or letter can be used as the property name to the result object.
const occurenceByReduce = (param) => { return [...param].reduce((result, nextChar) => { result[nextChar] = result[nextChar] ? result[nextChar] + 1 : 1; return result }, {}); } console.log(occurenceByReduce("How are you?")); // output // {H: 1, o: 2, w: 1, " ": 2, a: 1, …}
Solution 2:
We can also use the replace method with regular expression. Replace method will loop the entire string or sentence, and inside the loop, there is a condition to check like if the character is coming inside the loop for the first time then count will be added like 1. If a character is already present in the object then it will be incremented. The isNaN() function determines whether a value is NaN or not.
// sol 1 by replace const occurenceByReplace = (param) => { var countChar = {}; param.replace(/\S/g, function(item) { countChar[item] = (isNaN(countChar[item]) ? 1 : countChar[item] + 1); }); return countChar; } console.log(occurenceByReplace("How are you?")); // output // {H: 1, o: 2, w: 1, a: 1, r: 1, …}
Solution 3:
In the second solution, we can use the combination of set and map methods as follows. Define a function called occurenceBySet that accepts a string as a parameter.
const occurenceBySet = (param) => { let listOfChar = new Set(param.split('')), result = new Map(), count = 0; for (item of listOfChar) { for (var i = 0; i < param.length; i++) { if (item === param[i]) { count++; } } result.set(item, count); count = 0; } return result; } console.log(occurenceBySet('How are you?')); // output // Map(10) {"H" => 1, "o" => 2, "w" => 1, " " => 2, "a" => 1, …}
Good solutions