Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

JavaScript grouping words by length

let str = 'Sleep is critical for good health. Not getting enough sleep can lead 
to diminished brain performance and, in the long term, greater risk of 
health conditions. These include heart disease, stroke, and diabetes';

function findWordsByLen(str, len) {
  const punctuationReg = /[.:;,?!"`~[]{}()<>/@#$%^&*=+_-]/g;
  const words = str
	.replaceAll(/s{2,}/g, ' ')
	.replaceAll(punctuationReg, '')
	.split(' ');

  let wordsByLen = words.reduce((acc, word) => {
    let wordLen = word.length;
    if (!acc.has(wordLen)) acc.set(wordLen, new Set());
    acc.get(wordLen).add(word);
    return acc;
  }, new Map());

  const maxLen = Math.max(...wordsByLen.keys());
  const minLen = Math.min(...wordsByLen.keys());

  switch(len) {
  case 'all':
    return wordsByLen;
  case 'max':
    return wordsByLen.get(maxLen);
  case 'min':
    return wordsByLen.get(minLen);
  }

  if (Number.isInteger(len) && wordsByLen.has(len)) return wordsByLen.get(len)
  else return `The string doesn't have any words with a length of ${len}`

}

findWordsByLen(str, 'max');     // => Set(1) { 'performance' }
findWordsByLen(str, 'min');     // => Set(4) { 'is', 'to', 'in', 'of' }
findWordsByLen(str, 8);         // => Set(2) { 'critical', 'diabetes' }


findWordsByLen(str, 'all');
/* OUTPUT:
Map(9) {
  5 => Set(5) { 'Sleep', 'sleep', 'brain', 'These', 'heart' },
  2 => Set(4) { 'is', 'to', 'in', 'of' },
  8 => Set(2) { 'critical', 'diabetes' },
  3 => Set(5) { 'for', 'Not', 'can', 'and', 'the' },
  4 => Set(5) { 'good', 'lead', 'long', 'term', 'risk' },
  6 => Set(3) { 'health', 'enough', 'stroke' },
  7 => Set(4) { 'getting', 'greater', 'include', 'disease' },
  10 => Set(2) { 'diminished', 'conditions' },
  11 => Set(1) { 'performance' }
}
*/
Comment

PREVIOUS NEXT
Code Example
Javascript :: how to make bootstrap navbar to change on scroll 
Javascript :: javascript divide string into two parts 
Javascript :: onclick on fragment react 
Javascript :: javascript get smaller of two numbers 
Javascript :: today date selected in datepicker 
Javascript :: axios node js 
Javascript :: cors blocking communication 
Javascript :: Self Invoking Function Simpler Syntax 
Javascript :: javascript include a js file from another 
Javascript :: perform a function on each element of array javascript 
Javascript :: window scroll up 
Javascript :: print array without brackets javascript 
Javascript :: lodash find 
Javascript :: javascript get cursor position without event 
Javascript :: mongoose bulk create 
Javascript :: redux toolkit how to set empty initial state 
Javascript :: (error) = { console.log(error); } 
Javascript :: remove duplicates in array 
Javascript :: array pop 
Javascript :: google geocode nodejs 
Javascript :: regex negate 
Javascript :: requirejs example 
Javascript :: get index of item with attribute javascript 
Javascript :: find union of arrays 
Javascript :: js find in array 
Javascript :: super class js 
Javascript :: nodejs redirect to url 
Javascript :: import url from json angular 
Javascript :: debounce function in javascript 
Javascript :: javascript remove last item 
ADD CONTENT
Topic
Content
Source link
Name
8+8 =