Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make abbreviations/acronyms in JavaScript?

Tags:

javascript

new to coding I'm trying to make a function that makes "abbreviations/acronyms" of words, e.g. 'I love you' -> 'ily'. I've tried rewriting the code in many ways but console.log only shows me the first letter of the first given word.

function makeAbbr(words) {
  let abbrev = words[0];
  let after = 0;
  let i = 0;
  for (const letter of words) {
    if (letter === '') {
      i = words.indexOf('', after);
      abbrev += words[i + 1];
    }
    after++;
  }
  return abbrev;
}
const words = 'a bc def';
let result = makeAbbr(words);
console.log(result)
like image 343
Kuba Nowoszyński Avatar asked Oct 17 '25 00:10

Kuba Nowoszyński


2 Answers

here is my implementation of your function: Split the sentence into an array, get the first letter of each word and join them into one string.

const makeAbbr = string => string.split(' ').map(word => word[0]).join('');

console.log(makeAbbr('stack overflow'));
console.log(makeAbbr('i love you'));

`

like image 169
Marc B. Avatar answered Oct 18 '25 12:10

Marc B.


Without using arrays. But you really should learn about them.

  1. Start by trimming leading and trailing whitespace.
  2. Add the first character to your acronym.
  3. Loop over the rest of the string and add the current character to the acronym if the previous character was a space (and the current character isn't).

function makeAbbr(words) {
  words = words.trim();
  const length = words.length;
  let acronym = words[0];

  for(let i = 1; i < length; i++) {
    if(words[i - 1] === ' ' && words[i] !== ' ') {
       acronym += words[i];
    }
  }

  return acronym;
}
console.log(makeAbbr('I love you'));
console.log(makeAbbr('I     love     you'));
console.log(makeAbbr('   I    love    you   '));

And here's the version for GottZ

function w(char) {
   char = char.toLocaleLowerCase();
   const coll = Intl.Collator('en');
   const cmpA = coll.compare(char, 'a');
   const cmpZ = coll.compare(char, 'z');

   return cmpA >= 0 && cmpZ <= 0;
}

function makeAbbr(words) {
  words = words.trim();
  const length = words.length;
  if(!length) return '';

  let acronym = words[0];

  for(let i = 1; i < length; i++) {
    if(!w(words[i - 1]) && w(words[i])) {
       acronym += words[i];
    }
  }

  return acronym;
}
console.log(makeAbbr('I love you'));
console.log(makeAbbr('I     love     you'));
console.log(makeAbbr('   I    love    you   '));
console.log(makeAbbr('   \tI ...  ! love \n\r   .you   '));
console.log(makeAbbr('   \tI ...  ! Löve \n\r   .ÿou   '));
like image 39
Roman Avatar answered Oct 18 '25 13:10

Roman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!