Помощь с функцией которая возвращает заглавные буквы

Помогите с написанием функции. Функция принимает на вход строку, а возвращает заглавные буквы из этой строки. Я не придумал ничего лучше чем сделать массив из заглавных букв, но не понимаю как корректно из сравнить со строкой. Строку превратил в массив, как можно их сравнить и вернуть нужный результат?

function getCapitalsLetters(string) {
  const arr = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"]
  const newString = string.split('')
  newString.filter(item => item.indexOf(arr) === arr)
}
console.log(getCapitalsLetters('АвапВАПпсГГШШшш'))


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

Автор решения: ksa

Функция принимает на вход строку, а возвращает заглавные буквы из этой строки.

Предложу такой вариант...

function getCapitalsLetters(string) {
  return string.replace(/[^А-ЯЁ]/g, '')
}
console.log(getCapitalsLetters('АвапВАПпсГГШШшш'))

→ Ссылка
Автор решения: Егор Грачев

function getCapitalLetters(str) {
  const capitals = [];
  for (let i = 0; i < str.length; i++) {
    if (str[i] === str[i].toUpperCase() && str[i].match(/[А-Я]/)) {
      capitals.push(str[i]);
    }
  }
  return capitals.join('');
}

Берём строку и проверяет каждый символ по очереди. Если символ является заглавной буквой и это буква кириллицы в верхнем регистре, то эта буква добавляется в массив. После возвращает все найденные заглавные буквы в одной строке.

→ Ссылка