generate-words-freqmap
Version:
Generate frequency map from array of strings.
26 lines (21 loc) • 806 B
text/typescript
import { freqMapWordAsKeyType } from './common/types';
/** **freqMapWordAsKey** example: `{ foo: 1, bar: 3 }` */
function generateFreqMapWordAsKey(
wordsArray: string[],
caseInsensitive: boolean
): freqMapWordAsKeyType {
return wordsArray.reduce((freqMap, word) => {
const w = caseInsensitive ? word.toLowerCase() : word;
return {
...freqMap,
// using hasOwnProperty instead of check if undefined, otherwise
// if `word` is a built-in object property (e.g. `constructor`)
// would append 1 to this property (which would results in `NaN`)
// instead of creating a new property
[w]: Object.prototype.hasOwnProperty.call(freqMap, w)
? freqMap[w] + 1
: 1,
};
}, {} as freqMapWordAsKeyType);
}
export default generateFreqMapWordAsKey;