@YakovSpb

Как сосчитать повторяющиеся буквы в JS?

Что-то не работает код

function RST(str){
let arr = str.split('');
let num = 1;
let result = '';
for(let i = 1; i < arr.length; i++){
	if(arr[i] == arr[i-1]){
		num++;
	} else {
		result += arr[i] + num;
		num = 1;
	}
}
return result;
}


console.log(RST('AABBDDDFFEGERTAAA'))  //Должно получится  A2B2D3F2E1G1E1R1T1A3
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@alexalexes
Вариант с минимальными изменениями
function RST(str){
let arr = str.split('');
let num = 1;
let result = '';
for(let i = 1; i < arr.length; i++){
  if(arr[i] == arr[i-1]){
    num++;
  } else {
    result += arr[i-1] + num; // тут была ошибка
    num = 1;
  }
}
// Нужно допечатать последнее накопление num
if(arr.length > 0)
 result += arr[arr.length-1] + num;
return result;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
const count = str => [...str]
  .reduce((acc, n, i, a) => (
    (!i || a[i - 1] !== n) && acc.push([ n, 0 ]),
    acc[acc.length - 1][1]++,
    acc
  ), [])
  .flat()
  .join('');

или

const count = str => str.replace(/(.)\1*/g, m => m[0] + m.length);
Ответ написан
@Argentinium
CSS, JavaScript, React JS. I want to work!
function RST(str){
  return str.split('').reduce((obj, val)=>{
    obj[val] = obj[val] ? obj[val]+1: 1;
    return obj;
  }, {})
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
21 сент. 2020, в 13:21
50000 руб./за проект
21 сент. 2020, в 13:20
120000 руб./за проект
21 сент. 2020, в 13:08
5000 руб./за проект