Есть Строка разной длины, как вывести первый символ начиная с первого слова и его первого символа и дальше после каждого пробела?

function Abbr(words) {

} Это должно быть как функция Тоесть пользователь вводит к примеру "привет как дела" а получает "пкд" Спасибо


Ответы (2 шт):

Автор решения: OPTIMUS PRIME

str.split("разделитель") — разбивает строку на массив, убирая из неё переданный разделитель
arr.map(func) — Вызывает функцию для каждого элемента массива и подменяет этот элемент на результат вызова функции.
arr.join("строка между элементами") — собирает элементы массива обратно в строку.

let str = "Привет, как дела ?"; 

console.log( ex1(str) );
console.log( ex2(str) );
console.log( ex3(str) );

/***/
function ex1(str) {
  let words = str.split(" ");
  let result = "";
  
  for( let i = 0; i < words.length; i++ ) {
    let word = words[i];
    if( /[a-zа-яё]/i.test(word[0]) ) {
      result += word[0];
    }
  }
  
  return result;
}

function ex2(str) {
  return str.split(" ").map(word => /[a-zа-яё]/i.test(word[0]) ? word[0] : "").join("");
}

function ex3(str) {
  /* Так можно, но не нужно. (см. "регулярные выражения") */
  return str.match(/(?<=^|\s)([a-zа-яё])/ig).join("");
}

В вариантах со split(" ") есть допущение: Всё что начинается с пробела, считается словом. Чтобы брать только слова, можно добавить небольшую проверку:

/[a-zа-яё]/i.test(word[0]) — [Аниглийские или русские буквы], i — insensitive (т.е. и заглавные, и мелкие), проверяет на совпадение word[0] первую букву слова. Возвращается true или false.

.map(word => /[a-zа-яё]/i.test(word[0]) ? word[0] : "") (тернарный оператор): Если выражение вернет true, возьмется word[0], иначе: Пустая строка, которая не повлияет на результат после join(""). Был бы другой разделитель вместо пустой строки, пришлось бы переписать его в виде

str.split(" ").map(word => word[0]).filter(letter => /[a-zа-яё]/i.test(letter) ).join("")

→ Ссылка
Автор решения: Vahan Muradyan

let words='привет как дела'

function Abbr(words) {
  words=words.split(' ') //сначала отделим слова друг от друга пробелами и получим массив в котором слова будут выглядеть вот так: ['привет','как','дела']
return words.map(i=>i[0]).join('')// после вернём нулевые нулевые индексы каждого элемента в массиве и соеденим их при помощи join('')
}
console.log(Abbr(words)) //и выводим в консоль

→ Ссылка