Figuring out the highest value through a for in loop - JavaScript

When working with comma-separated strings in JavaScript, you might need to find which value appears most frequently. This tutorial demonstrates how to use a for-in loop to count occurrences and determine the most frequent item.

Suppose we have a comma-separated string containing fruit names:

const str = 'Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grape,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,Grape,Orange,Orange,Apple,Apple,Banana';
console.log(str);
Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grape,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,Grape,Orange,Orange,Apple,Apple,Banana

Using for-in Loop with Object

We can use a for-in loop to iterate through an object containing fruit counts:

const str = 'Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grape,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,Grape,Orange,Orange,Apple,Apple,Banana';

const findMostFrequent = str => {
    const strArr = str.split(',');
    const counts = {};
    
    // Count occurrences
    for (let fruit of strArr) {
        counts[fruit] = (counts[fruit] || 0) + 1;
    }
    
    // Use for-in to find the highest count
    let maxCount = 0;
    let mostFrequent = '';
    
    for (let fruit in counts) {
        if (counts[fruit] > maxCount) {
            maxCount = counts[fruit];
            mostFrequent = fruit;
        }
    }
    
    return mostFrequent;
};

console.log("Most frequent fruit:", findMostFrequent(str));
console.log("Fruit counts:");

// Display all counts using for-in
const strArr = str.split(',');
const counts = {};
for (let fruit of strArr) {
    counts[fruit] = (counts[fruit] || 0) + 1;
}

for (let fruit in counts) {
    console.log(`${fruit}: ${counts[fruit]}`);
}
Most frequent fruit: Banana
Fruit counts:
Banana: 8
Pear: 2
Orange: 6
Apple: 4
Melon: 4
Grape: 5

Alternative Approach Using Map

Here's the original approach using Map and reduce for comparison:

const str = 'Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grape,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,Grape,Orange,Orange,Apple,Apple,Banana';

const findMostFrequentMap = str => {
    const strArr = str.split(',');
    const creds = strArr.reduce((acc, val) => {
        if (acc.has(val)) {
            acc.set(val, acc.get(val) + 1);
        } else {
            acc.set(val, 1);
        }
        return acc;
    }, new Map());
    
    return Array.from(creds).sort((a, b) => b[1] - a[1])[0][0];
};

console.log("Result using Map:", findMostFrequentMap(str));
Result using Map: Banana

Comparison of Approaches

Method Data Structure for-in Usage Complexity
Object with for-in Plain Object Direct iteration O(n)
Map with reduce Map No for-in used O(n log n) due to sorting

Key Points

  • The for-in loop iterates over object property names (keys)
  • Use counts[fruit] to access the count value for each fruit
  • Initialize counters with (counts[fruit] || 0) + 1 to handle first occurrences
  • Track both the maximum count and corresponding item during iteration

Conclusion

Using a for-in loop with an object provides a straightforward approach to find the most frequent item in a comma-separated string. This method is efficient and readable for counting occurrences.

Updated on: 2026-03-15T23:18:59+05:30

173 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements