word frequency in javascript

后端 未结 6 1435
自闭症患者
自闭症患者 2020-12-05 16:57

\"enter

How can I implement javascript function to calculate frequency of each word in

6条回答
  •  清歌不尽
    2020-12-05 17:16

    I feel you have over-complicated things by having multiple arrays, strings, and engaging in frequent (and hard to follow) context-switching between loops, and nested loops.

    Below is the approach I would encourage you to consider taking. I've inlined comments to explain each step along the way. If any of this is unclear, please let me know in the comments and I'll revisit to improve clarity.

    (function () {
    
        /* Below is a regular expression that finds alphanumeric characters
           Next is a string that could easily be replaced with a reference to a form control
           Lastly, we have an array that will hold any words matching our pattern */
        var pattern = /\w+/g,
            string = "I I am am am yes yes.",
            matchedWords = string.match( pattern );
    
        /* The Array.prototype.reduce method assists us in producing a single value from an
           array. In this case, we're going to use it to output an object with results. */
        var counts = matchedWords.reduce(function ( stats, word ) {
    
            /* `stats` is the object that we'll be building up over time.
               `word` is each individual entry in the `matchedWords` array */
            if ( stats.hasOwnProperty( word ) ) {
                /* `stats` already has an entry for the current `word`.
                   As a result, let's increment the count for that `word`. */
                stats[ word ] = stats[ word ] + 1;
            } else {
                /* `stats` does not yet have an entry for the current `word`.
                   As a result, let's add a new entry, and set count to 1. */
                stats[ word ] = 1;
            }
    
            /* Because we are building up `stats` over numerous iterations,
               we need to return it for the next pass to modify it. */
            return stats;
    
        }, {} );
    
        /* Now that `counts` has our object, we can log it. */
        console.log( counts );
    
    }());
    

提交回复
热议问题